Cześć,
jak mając kilka Sliderów (dajmy na to 3) ustawić wartość jednego z nich jako sumę wartości dwóch pozostałych. Tzn tak, aby zmieniając wartość tych dwóch, wartość trzeciego ustawiała się automatycznie.
Mam problem z poniższym kodem, chcę aby wartość JSlider poj była sumą wartości JSlider stala i JSlider napiecie. Program się kompliuje, ale wartość na suwaczku się nie zmienia. + nie wiem dlaczego, ale nie pojawiają się JLabel'e przy niektórych suwaczkach (a kod napisany jest analogicznie do tych, przy których się pojawiają)
public class Configurations extends javax.swing.JFrame {
public Configurations() {
initComponents();
}
private void initComponents() {
options1 = new JPanel();
options2 = new JPanel();
buttons = new JPanel();
labelPowierzchnia = new JLabel();
labelNapiecie = new JLabel();
labelOdleglosc = new JLabel();
labelStala = new JLabel();
powierzchnia = new JSlider();
napiecie = new JSlider();
odleglosc = new JSlider();
stala = new JSlider();
napiecieSI = new JLabel();
odlegloscSI = new JLabel();
powierzchniaSI = new JLabel();
stalaSI = new JLabel();
pojSI = new JLabel();
labelPojemnosc = new JLabel();
poj = new JSlider();
closeButton = new JButton();
buttons.add(closeButton);
options1.add(labelNapiecie);
options1.add(napiecieSI);
options1.add(napiecie);
options1.add(labelOdleglosc);
options1.add(odlegloscSI);
options1.add(odleglosc);
options2.add(labelPowierzchnia);
options2.add(powierzchnia);
options2.add(labelStala);
options2.add(stala);
options2.add(poj);
options2.add(labelPojemnosc);
this.setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS));
add(options1);
add(options2);
add(buttons);
//ZD
labelNapiecie.setText("ustaw napiecie");
napiecieSI.setText("380 nm");
napiecie.setMajorTickSpacing(500);
napiecie.setMaximum(400);
napiecie.setMinimum(-400);
napiecie.setMinorTickSpacing(50);
napiecie.setPaintLabels(true);
napiecie.setPaintTicks(true);
napiecie.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider source1 = (JSlider)evt.getSource();
napiecieSI.setText(Integer.toString(source1.getValue())+" V");
}
});
labelOdleglosc.setText("Wybierz odleglosc miedzy okladkami (1-30):");
odlegloscSI.setText("10");
odleglosc.setMajorTickSpacing(4);
odleglosc.setValue(10);
odleglosc.setMaximum(30);
odleglosc.setMinorTickSpacing(1);
odleglosc.setPaintLabels(true);
odleglosc.setPaintTicks(true);
odleglosc.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider source2 = (JSlider)evt.getSource();
odlegloscSI.setText(Integer.toString(source2.getValue()));
}
});
labelPowierzchnia.setText("Ustaw powierzchnie okladek (1-30): ");
powierzchniaSI.setText("10");
powierzchnia.setMajorTickSpacing(4);
powierzchnia.setValue(10);
powierzchnia.setMaximum(30);
powierzchnia.setMinorTickSpacing(1);
powierzchnia.setPaintLabels(true);
powierzchnia.setPaintTicks(true);
powierzchnia.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider source3 = (JSlider)evt.getSource();
powierzchniaSI.setText(Integer.toString(source3.getValue()));
}
});
labelStala.setText("Wybierz stala dielektryczna (1-5) ");
stalaSI.setText("4");
stala.setMajorTickSpacing(4);
stala.setValue(2);
stala.setMaximum(5);
stala.setMinorTickSpacing(1);
stala.setPaintLabels(true);
stala.setPaintTicks(true);
stala.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider source4 = (JSlider)evt.getSource();
stalaSI.setText(Integer.toString(source4.getValue()));
}
});
labelPojemnosc.setText("Pojemnosc kondensatora");
pojSI.setText("0");
pojSI.setVisible(true);
poj.setMajorTickSpacing(1);
poj.setMinorTickSpacing(1);
poj.setPaintTicks(true);
poj.setPaintTrack(true);
poj.setAutoscrolls(true);
poj.setPreferredSize(new Dimension(500,500));
poj.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider stala = (JSlider)evt.getSource();
JSlider napiecie = (JSlider)evt.getSource();
pojSI.setText(Integer.toString(stala.getValue())+Integer.toString(napiecie.getValue()));
}
});
//Integer.parseInt()
//pojemnosc.setText(String.valueOf(poj.getValue()));
//ZD
closeButton.setText("Exit");
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
dispose();
}
});
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Kondensator");
}
private JButton closeButton;
private JLabel labelPowierzchnia;
private JLabel labelNapiecie;
private JLabel labelOdleglosc;
private JLabel labelPojemnosc;
private JLabel labelStala;
private JPanel options1;
private JPanel options2;
private JPanel buttons;
private JSlider napiecie;
private JSlider odleglosc;
private JSlider powierzchnia;
private JSlider stala;
private JSlider poj;
private JLabel napiecieSI;
private JLabel odlegloscSI;
private JLabel powierzchniaSI;
private JLabel stalaSI;
private JLabel pojSI;
}
pomóżcie proszę! :)