Przekazanie wartości z JSlider do obiektu Rectangle2D

0

Witam,
ma ktoś pomysł na przekazanie wartości z JSlidera do obiektu Rectangle2D aby zmienić np. jego wartość "x" bo mój nie działa?

class SliderFrame extends JFrame{
public SliderFrame() {
        gr = new Grafika();
        add(gr, BorderLayout.CENTER);

        panel = new JPanel();
        add(panel, BorderLayout.EAST);

        slider = new JSlider(JSlider.VERTICAL,0, 100,0);
        slider.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent e) 
            {
                gr.setValue(slider.getValue());
            }
        });
        panel.add(slider,BorderLayout.EAST);
    }
}

class Grafika extends JComponent {

    Shape sh1;
    public int value;

    public Grafika() {
        sh1 = new Rectangle2D.Double(value, 100, 150, 150);
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        
        g2.setPaint(Color.GREEN);
        g2.fill(sh1);
    }

    public void setValue(int v){
        v = value;
        repaint();
    }

}
     
 

W innych wątkach na tym forum i nie tylko nie znalazłem.

0

Tworzysz prostokąt w konstruktorze klasy Grafika i nigdzie nie zmieniasz rozmiarów tego prostokąta, zmieniasz tylko wartość pola value.

0

@ bo - ja właśnie myślałem tak jak losowa nazwa że zmieniam value i ta value "idzie" od razu do Rectangla i że on o tym wie. Tylko nie wiem jak z tym drugim.
@ [losowa nazwa] - ale gdzie mam utworzyć ten nowy Rect? Tego nie kumam. Możesz mi to przybliżyć? Jak to ma wyglądać?

0

Rectangle nie wie o zmianie wartości value.
Do zmiany parametrów Rectangle'a służy metoda setFrame(...). Niech metoda setValue() z klasy Grafika wywołuje metodę setFrame().

0

Niestety ta metoda nie jest możliwa do wywołania ani w tej metodzie ani w innej bo NB nie podpowiada nawet istnienia tej metody więc nadal nie wiem jak to zrobić:(

0

To czy można użyć metodę zależy tylko od tego czy metoda istnieje i jest dostępna (public, protected, ...). Fakt, że NB jej nie podpowiada nie ma żadnego wpływu na możliwość użycia metody.
http://download.oracle.com/javase/7/docs/api/java/awt/geom/Rectangle2D.Double.html
Masz do wyboru metody setRect() i setFrame().

1 użytkowników online, w tym zalogowanych: 0, gości: 1