Nachdem ich alle AWT-Kapitel in meinem Buch durch bin, widme ich mich jetzt endlich Swing
.
Zum Testen wollte ich mal den JSlider ausprobieren, also diese Scrollbars mit Skala.
Mein Code setzt 2 JSlider auf ein Frame. Der rechte Schieber symbolisiert dabei die Width eines Rechtecks und der untere Schieber die Height. Diese Rechteck, was auf dem Bildschirm ausgegeben wird, soll also von den JSlidern abhängig sein
(heißt also, dass immer, wenn der Wert von diesen verändert wird, auch der Wert des Rechtecks verändert wird).
Jetzt aber das Problem:
Erstens wird mir nur der rechte, der Width-Slider angezeigt
und zweitens buggt dieser auch noch irgendwie rum ...
Kann mir jemand sagen, was ich falsch mache?
Zum Testen wollte ich mal den JSlider ausprobieren, also diese Scrollbars mit Skala.
Mein Code setzt 2 JSlider auf ein Frame. Der rechte Schieber symbolisiert dabei die Width eines Rechtecks und der untere Schieber die Height. Diese Rechteck, was auf dem Bildschirm ausgegeben wird, soll also von den JSlidern abhängig sein
(heißt also, dass immer, wenn der Wert von diesen verändert wird, auch der Wert des Rechtecks verändert wird).
Java:
package tests.gui;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
@SuppressWarnings("serial")
public class SlideTest
extends JFrame
implements ChangeListener
{
private JSlider WidthSlider = new JSlider(JSlider.VERTICAL, 0, 100, 0); //Der rechte Width-Schieberegler
private JSlider HeightSlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 0); //Der untere Height-Schieberegler
private Rectangle rect = new Rectangle(35, 35, 0, 0); //Das zu zeichnende Rechteck
public SlideTest()
{
super("Slide-Test!");
setSize(400, 300);
setResizable(false);
//WidthSlider-Initialisierungen
WidthSlider.setMajorTickSpacing(50);
WidthSlider.setMinorTickSpacing(10);
WidthSlider.setPaintLabels(true);
WidthSlider.setPaintTicks(true);
//HeightSlider-Initialisierungen
HeightSlider.setMajorTickSpacing(50);
HeightSlider.setMinorTickSpacing(10);
HeightSlider.setPaintLabels(true);
HeightSlider.setPaintTicks(true);
//Listener registrieren
WidthSlider.addChangeListener(this);
HeightSlider.addChangeListener(this);
//Adden
Container cp = getContentPane();
cp.add(WidthSlider, BorderLayout.EAST);
cp.add(HeightSlider, BorderLayout.SOUTH);
//Fenster anzeigen
setVisible(true);
}
@Override
public void stateChanged(ChangeEvent event)
{
JSlider slider = (JSlider)event.getSource();
if (slider == WidthSlider)
{
rect.width = slider.getValue();
}
else if (slider == HeightSlider)
{
rect.height = slider.getValue();
}
repaint();
}
public void paint(Graphics g)
{
g.drawRect(rect.x, rect.y, rect.width, rect.height);
}
public static void main(String[] args)
{
new SlideTest();
}
}
Jetzt aber das Problem:
Erstens wird mir nur der rechte, der Width-Slider angezeigt

und zweitens buggt dieser auch noch irgendwie rum ...

Kann mir jemand sagen, was ich falsch mache?