Swing JSlider erscheint doppelt

AlphaVoice

Mitglied
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:

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();
	}
}
 

Anhänge

  • unit-circle.png
    unit-circle.png
    37,7 KB · Aufrufe: 27

Schandro

Top Contributor
Wenn man die paintComponent-Methode überschreibt sollte man am Anfang
Code:
super.paintComponent(g)
aufrufen, ansonsten entstehen solche Grafikfehler da das alte Bild nicht korrekt geleert wird bevor der neue Inhalt gezeichnet wird.

PS: Diese Zeile hier:
Java:
Container content = appFrame.getContentPane();
brauchst du nicht, du kannst
Code:
add
und
Code:
setLayout
auch direkt auf das JFrame-Object aufrufen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
D Swing JSlider Tip Anzahl AWT, Swing, JavaFX & SWT 3
J JSlider sichtbar AWT, Swing, JavaFX & SWT 7
J Swing JSlider - Form des Reglers AWT, Swing, JavaFX & SWT 6
J JSlider Color Ticks AWT, Swing, JavaFX & SWT 1
J JSlider - MajorTick AWT, Swing, JavaFX & SWT 0
Z JSlider im Modalen-Fenster AWT, Swing, JavaFX & SWT 0
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
A Slider (JSlider?) AWT, Swing, JavaFX & SWT 7
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
A Swing Bestimmte Werte anzeigen JSlider() AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
M JSlider-Wert ändern, ohne ein ChangeEvent auszulösen AWT, Swing, JavaFX & SWT 4
C Aussehen von JSlider ändern AWT, Swing, JavaFX & SWT 7
D Swing jSlider soll selber weiterwandern, je nach zeit der musik AWT, Swing, JavaFX & SWT 5
D JSlider und Textfeld AWT, Swing, JavaFX & SWT 2
C Swing Tickspacing in JSlider AWT, Swing, JavaFX & SWT 3
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
Y JSlider Wert auslesen (Kategorien) AWT, Swing, JavaFX & SWT 2
T jSlider-Value als Float in jLabel ausgeben AWT, Swing, JavaFX & SWT 2
O Swing JSlider mit doppelter Value AWT, Swing, JavaFX & SWT 6
F JSlider Design ändern AWT, Swing, JavaFX & SWT 6
D Swing JSlider AWT, Swing, JavaFX & SWT 11
B JSlider - Wert am Mouszeiger anzeigen lassen AWT, Swing, JavaFX & SWT 6
E JSlider synchron halten AWT, Swing, JavaFX & SWT 4
J Swing jSlider nur auf bestimmte werte beschränken AWT, Swing, JavaFX & SWT 15
X Audio Player: Fenster mit Play/Stop-Button erstellen, mit JSlider Lautstärke ändern AWT, Swing, JavaFX & SWT 6
R JSlider AWT, Swing, JavaFX & SWT 9
M Swing JSlider, Popup-Box AWT, Swing, JavaFX & SWT 3
J JSlider mit Double Werten AWT, Swing, JavaFX & SWT 5
J JSlider auf JTextPane? AWT, Swing, JavaFX & SWT 2
M Jslider Beschriftung AWT, Swing, JavaFX & SWT 6
R JLabel und JSlider dynamisch erzeugen? AWT, Swing, JavaFX & SWT 3
E jSlider und ChangeListener AWT, Swing, JavaFX & SWT 2
S JSlider Track Breite und Farbe AWT, Swing, JavaFX & SWT 2
T Swing JSlider und Adjustment-Listener wollen nicht so recht AWT, Swing, JavaFX & SWT 2
O JSlider - wie unterscheide ich mit Maus verändert und durch setValue verändert. AWT, Swing, JavaFX & SWT 16
T JSlider: ChangeListener löst dreimal aus? AWT, Swing, JavaFX & SWT 4
B JSlider in JCombobox AWT, Swing, JavaFX & SWT 9
J JSlider wird nicht neugezeichnet AWT, Swing, JavaFX & SWT 8
J Einen JSlider ähnlich wie in OO3 AWT, Swing, JavaFX & SWT 5
G JSlider in Applet AWT, Swing, JavaFX & SWT 4
K Unterschiedliches Aussehen der JSlider? AWT, Swing, JavaFX & SWT 4
I Listener für einen JSlider AWT, Swing, JavaFX & SWT 1
G beschriftung von JSlider AWT, Swing, JavaFX & SWT 7
H JSlider mit 2 Werten AWT, Swing, JavaFX & SWT 7
L JSlider Beschriftung AWT, Swing, JavaFX & SWT 1
A JSlider umdrehen AWT, Swing, JavaFX & SWT 15
D JSlider und JMF player verbinden AWT, Swing, JavaFX & SWT 6
J JSlider regaiert unter Java 1.6 nicht mehr AWT, Swing, JavaFX & SWT 7
N JSlider: Kosmetik - snapToTicks AWT, Swing, JavaFX & SWT 3
T JComponents abändern/modifizieren z.b. JSlider AWT, Swing, JavaFX & SWT 2
N Nicht linearer JSlider! AWT, Swing, JavaFX & SWT 4
T JSlider getValue() erst nach dem Loslassen des Mauszeigers AWT, Swing, JavaFX & SWT 3
Z JSlider-Knob wenden AWT, Swing, JavaFX & SWT 8
L JSlider stumm geworden? AWT, Swing, JavaFX & SWT 2
I JSlider - klick ignorieren AWT, Swing, JavaFX & SWT 4
I JSlider-Schieberegler AWT, Swing, JavaFX & SWT 7
T JSlider Schiebereglerbild ändern AWT, Swing, JavaFX & SWT 4
U JSlider - Probleme bei der Darstellung AWT, Swing, JavaFX & SWT 3
H ChangeListener für JSlider AWT, Swing, JavaFX & SWT 6
P JSlider automatisch bewegen AWT, Swing, JavaFX & SWT 3
G JSlider AWT, Swing, JavaFX & SWT 2
S e(fx)clipse erscheint nicht im Marketplace, lässt sich nicht installieren AWT, Swing, JavaFX & SWT 16
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
stylegangsta Splash Screen erscheint nicht AWT, Swing, JavaFX & SWT 30
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
D Button erscheint nicht AWT, Swing, JavaFX & SWT 2
B Swing BalloonTip erscheint nicht in den ersten Zeilen einer JXTable AWT, Swing, JavaFX & SWT 4
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
L Swing JPanel erscheint erst beim Vergrößern AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
R Fensterinhalt erscheint erst, wenn das Fenster verändert wird AWT, Swing, JavaFX & SWT 7
A SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite AWT, Swing, JavaFX & SWT 6
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
G Swing Die Menüleiste erscheint nicht AWT, Swing, JavaFX & SWT 8
M JScrollPane und JTree -> JScrollPane erscheint nicht AWT, Swing, JavaFX & SWT 6
W JDialog erscheint nur durchsichtig AWT, Swing, JavaFX & SWT 7
G JDialog erscheint nicht AWT, Swing, JavaFX & SWT 2
J Button erscheint (nicht) AWT, Swing, JavaFX & SWT 8
T Prozesse starten wenn JDialog erscheint AWT, Swing, JavaFX & SWT 2
F Häkchen erscheint nicht bei anklicken von Checkbox in JTable AWT, Swing, JavaFX & SWT 4
G Bild erscheint in Eclipse, aber nicht wenn Programm aus jar AWT, Swing, JavaFX & SWT 11
A Panelinhalt erscheint erst nach Mouseklick auf den Framerand AWT, Swing, JavaFX & SWT 6
L Falsches Fenster erscheint im Vordergrund bei Taskwechsel AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
R Swing JPanel doppelt gezeichnet AWT, Swing, JavaFX & SWT 1
2 Doppelt zeichnen vermeiden? AWT, Swing, JavaFX & SWT 22
Weltall 7 Swing JPanels werden doppelt gezeichnet AWT, Swing, JavaFX & SWT 6
Weltall 7 AWT Maus-Events werden doppelt ausgeführt AWT, Swing, JavaFX & SWT 12
T JFrame doppelt nutzen? AWT, Swing, JavaFX & SWT 3
A Prob:Tabelle bei Zellensprung: Letzte zeile doppelt sichtbar AWT, Swing, JavaFX & SWT 7
C JList, valueChanged wird doppelt ausgeführt? <<closed AWT, Swing, JavaFX & SWT 2
M ListSelectionListener wird doppelt durchlaufen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben