Guten Abend,
es ist zwar schon spät, aber ich quäle mich nun schon seit ein paar Tagen mit einem etwas seltsamen Problem rum: Ich habe ein Programm erstellt, was den Einheitskreis zeichnen soll und Sinus, Kosinus und Tangens berechnen soll. Um den Winkel (0° <= x <= 360°) festzulegen, habe ich einen JSlider genommen und den in meine GUI mit eingebaut.
Wenn ich nun den Slider bewege und stateChanged() ausgelöst wird, wird nicht nur der Text von dem JLabel geändert, sondern es wird unter sineValueLabel noch ein zweiter Slider "gezeichnet". Allerdings habe ich keinen Plan, wo der herkommt... Ist bisschen schwer zu beschreiben, deswegen hab ich mal einen Screenshot gemacht.
Hier mein Code:
es ist zwar schon spät, aber ich quäle mich nun schon seit ein paar Tagen mit einem etwas seltsamen Problem rum: Ich habe ein Programm erstellt, was den Einheitskreis zeichnen soll und Sinus, Kosinus und Tangens berechnen soll. Um den Winkel (0° <= x <= 360°) festzulegen, habe ich einen JSlider genommen und den in meine GUI mit eingebaut.
Wenn ich nun den Slider bewege und stateChanged() ausgelöst wird, wird nicht nur der Text von dem JLabel geändert, sondern es wird unter sineValueLabel noch ein zweiter Slider "gezeichnet". Allerdings habe ich keinen Plan, wo der herkommt... Ist bisschen schwer zu beschreiben, deswegen hab ich mal einen Screenshot gemacht.
Hier mein Code:
Java:
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* Unit circle simulation
*
* @author AlphaVoice
* @copyright 2012 AlphaVoice
*/
public class UnitCircle extends JPanel {
private JLabel sineValueLabel;
public UnitCircle() {
createWindow();
}
public void createWindow() {
JFrame appFrame = new JFrame("Darstellung der trigonometrischen Funktionen am Einheitskreis");
appFrame.setSize(725, 500);
appFrame.setContentPane(this);
JLabel angleLabel = new JLabel();
angleLabel.setFont(angleLabel.getFont().deriveFont(16.0f));
angleLabel.setText("\u03C6");
angleLabel.setSize(50, 20);
angleLabel.setLocation(385, 99);
JLabel sineLabel = new JLabel("sin(\u03C6) = ");
sineLabel.setFont(sineLabel.getFont().deriveFont(16.0f));
sineLabel.setSize(500, 20);
sineLabel.setLocation(385, 200);
sineValueLabel = new JLabel("0");
sineValueLabel.setFont(sineValueLabel.getFont().deriveFont(16.0f));
sineValueLabel.setSize(500, 20);
sineValueLabel.setLocation(450, 200);
JLabel cosineLabel = new JLabel("cos(\u03C6) = ");
cosineLabel.setFont(cosineLabel.getFont().deriveFont(16.0f));
cosineLabel.setSize(500, 20);
cosineLabel.setLocation(385, 235);
JLabel tangentLabel = new JLabel("tan(\u03C6) = ");
tangentLabel.setFont(tangentLabel.getFont().deriveFont(16.0f));
tangentLabel.setSize(500, 20);
tangentLabel.setLocation(385, 270);
JSlider angleSlider = new JSlider(0, 360, 0);
angleSlider.setSize(250, 25);
angleSlider.setLocation(415, 100);
angleSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JSlider slider = (JSlider) e.getSource();
sineValueLabel.setText("" + slider.getValue());
}
});
Container content = appFrame.getContentPane();
content.setLayout(null);
content.add(angleLabel);
content.add(sineLabel);
content.add(cosineLabel);
content.add(tangentLabel);
content.add(sineValueLabel);
content.add(angleSlider);
appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
appFrame.setResizable(false);
appFrame.setLocationRelativeTo(null);
appFrame.setVisible(true);
}
public void paintComponent(Graphics g) {
g.setColor(Color.LIGHT_GRAY);
g.fillOval(35, 70, 300, 300);
g.setColor(Color.BLACK);
g.drawLine(335, 220, 35, 220);
g.drawLine(185, 70, 185, 370);
}
public static void main(String[] args) {
new UnitCircle();
}
}