Staram się napisać minikalulator składający się z dwóch klas ComboBox i Calculation, moim celem jest przekazanie wartości wybranego Stringa z Comboboxu do klasy Calculation, wykonanie na nim np szeregu obliczeń, po czym przeniesieniu wyniku obliczeń do pola JField "fieldOutput2". Za pierwszym razem, gdy wybieram wartość z Comboboxu, wszystko działa poprawnie, natomiast przy ponownej zmianie wartości w Comboboxie, wartość "value1" w klasie "Calculation" nie aktualizuje się. Proszę o pomoc w rozwiązaniu problemu.
- ComboBox
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class ComboBox extends JFrame implements ActionListener
{
static JComboBox comboNumber;
JLabel labelOutput1;
static JTextField fieldOutput1;
JLabel labelOutput2;
JTextField fieldOutput2;
static double helpValue1;
public ComboBox()
{
setTitle("ComboBox");
setSize(300,300);
setLayout(null);
setLocationRelativeTo(null);
setResizable(false);
comboNumber= new JComboBox(new String[] {"20", "30", "40"});
comboNumber.setBounds(50, 50, 100, 20);
comboNumber.setEditable(true);
add(comboNumber);
comboNumber.addActionListener(this);
fieldOutput1=new JTextField("");
fieldOutput1.setBounds(100,100,50,20);
add(fieldOutput1);
fieldOutput2=new JTextField();
fieldOutput2.setBounds(100,150,50,20);
add(fieldOutput2);
labelOutput1=new JLabel("Output1:");
labelOutput1.setBounds(50,100,200,20);
labelOutput1.setForeground(new Color(200,200,200));
labelOutput1.setFont(new Font("SansSerif", Font.BOLD, 12));
add(labelOutput1);
labelOutput2=new JLabel("Output2:");
labelOutput2.setBounds(50,150,200,20);
labelOutput2.setForeground(new Color(200,200,200));
labelOutput2.setFont(new Font("SansSerif", Font.BOLD, 12));
add(labelOutput2);
}
public static String getSelectedItem()
{
return (String)comboNumber.getSelectedItem();
}
public static void main (String[] args)
{
ComboBox cb = new ComboBox();
cb.setVisible(true);
cb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
Object źródło= e.getSource();
if (źródło==comboNumber)
{
fieldOutput1.setText((String) comboNumber.getSelectedItem());
helpValue1=Double.parseDouble(fieldOutput1.getText());
//double helpValue2=helpValue1*2;
fieldOutput2.setText(String.valueOf(Calculation.method1()));
System.out.println("helpValue: " + String.valueOf(helpValue1));
System.out.println("getSelectedItem: " + getSelectedItem());
System.out.println("Calculation.value1: " + Calculation.value1);
System.out.println("Calculation.method1(): " + String.valueOf(Calculation.method1()));
}
}
}
2.Calculation
public class Calculation
{
static double value1=ComboBox.helpValue1;
//static double value1=Double.parseDouble(ComboBox.getSelectedItem());
static double method1()
{
double value2=2*value1;
return value2;
}
}