Witam. Próbuje stworzyc metodę, dodającą suwak, o dowolnie zadeklarowanych parametrach: vertical czy horizontal, zakres wartości itd.
Mój problem polega na tym, że nie potrafie wyciągnąć wartości zmienianej w metodzie stateChanged(ChangeEvent e) z ChangeListenera. Próbowałem deklarować w różny sposób, tablice jednakże coś nie chce działać. Wartość zmienia się tylko w obrębie metody, dlatego kolor panelu zmienia się tylko gdy dodam linijke wewnątrz funkcji, a chciałbym, aby zmienna z każdego suwaka była globalna. Proszę o jakąś pomoc, Dziękuję z góy !
Oto kod:
package paczkapaczka;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Suwaki extends JFrame{
private int WIDTH = 400;
private int HEIGHT = 400;
static int R;
static int G;
static int B;
int wartoscSuwaka [];
JPanel panel = new JPanel();
JSlider suwak [] = new JSlider [3];
public Suwaki() {
initComponent();
}
public void initComponent() {
// tworzenie ramki
String nazwaKlasy = this.getClass().getSimpleName();
setTitle(nazwaKlasy);
setSize(WIDTH,HEIGHT);
setLocationRelativeTo(null);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(panel);
stworzSuwak("R", 0, 1, 0, 255, 120, 50, Color.blue, Color.yellow);
stworzSuwak("G", 1, 1, 0, 255, 120, 50, Color.blue, Color.yellow);
stworzSuwak("B", 2, 1, 0, 255, 120, 50, Color.blue, Color.yellow);
R = zwrocWartoscSuwaka(0, wartoscSuwaka);
G = zwrocWartoscSuwaka(1, wartoscSuwaka);
B = zwrocWartoscSuwaka(2, wartoscSuwaka);
panel.setBackground(new Color(R, G, B));
}
public void stworzSuwak(String nazwa, int numerSuwaka, int orientacja, int min, int max, int pozycjaPoczatkowaSuwaka, int coIlePrzedzialka, Color foreground, Color background) {
wartoscSuwaka = new int [3];
suwak[numerSuwaka] = new JSlider(orientacja ,min, max, pozycjaPoczatkowaSuwaka);
panel.add(suwak[numerSuwaka], BorderLayout.NORTH);
suwak[numerSuwaka].setForeground(foreground);
suwak[numerSuwaka].setBackground(background);
suwak[numerSuwaka].setMajorTickSpacing(coIlePrzedzialka);
suwak[numerSuwaka].setPaintTicks(true);
suwak[numerSuwaka].setPaintLabels(true);
suwak[numerSuwaka].setSnapToTicks(true);
suwak[numerSuwaka].addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
// wartoscSuwaka[numerSuwaka] = ((JSlider)e.getSource()).getValue();
wartoscSuwaka[numerSuwaka] = suwak[numerSuwaka].getValue();
System.out.println("["+nazwa+"] "+wartoscSuwaka[numerSuwaka]);
}
});
}
public int zwrocWartoscSuwaka(int numerSuwaka, int wartoscSuwaka[]) {
int zmienna = wartoscSuwaka[numerSuwaka];
return zmienna;
}
public static void main(String[] args) {
new Suwaki().setVisible(true);
}
}