Dyl*_*lan 1 java swing jlabel jcombobox itemlistener
我有一个JComboBox有12个不同的选择,根据选择的内容,我希望问题(JLabel)更改匹配选择.我已经尝试了一个if语句来查看所选内容以及它是否与应该选择的内容相匹配,然后问题会相应地改变,但JLabel在某种情况下从未真正改变过.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Window extends JFrame{
private static final long serialVersionUID = 1L;
public Window(){
super("Area Finder v1.0");
BufferedImage image = null;
try {
image = ImageIO.read(getClass().getClassLoader().getResource("images/areafinder.png"));
} catch (IOException e) {
e.printStackTrace();
}
super.setIconImage(image);
setSize(400, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel Instr = new JLabel("What would kind of area would you like to find?");
String[] areaChoices = {"Circle", "Square", "Rectangle", "Triangle", "Trapezoid", "Parallelogram", "Hexagon", "Rhombus", "Pentagon", "Polygon", "Ellipse", "Sector"};
final JComboBox<?> choiceBox = new JComboBox(areaChoices);
final Object isSelected = choiceBox.getSelectedItem();
choiceBox.setToolTipText("Select which one you want to find the area of!");
choiceBox.setSelectedIndex(0);
final JLabel q = new JLabel("");
final JTextField inputFromUser = new JTextField("");
JButton findArea = new JButton("Find Area");
/* Question Changer*/
/*End of Question Changer*/
findArea.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0){
if(isSelected == "Circle"){
double radius = Double.parseDouble(inputFromUser.getText());
double area = 3.14 * (radius * radius);
JOptionPane.showMessageDialog(null, "Your Area is " + area);
}else if(isSelected == "Square"){
}
}
});
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(15,15,15,15);
panel.add(Instr);
panel.add(choiceBox);
panel.add(findArea);
panel.add(q);
panel.add(inputFromUser);
add(panel);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:所以我用System.out.println()进行了一些测试; 我发现它同时调用了所有项目,但是首先调用了所选项目.例:
choiceBox.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getItem() == "Circle"){
System.out.println("Circle selected");
}else if(e.getItem() == "Square"){
System.out.println("Square selected");
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果选择圆形,则打印出"选择圆形所选方形",如果选择"方形",则选择"选定方形圆形".
当选择发生变化时,添加一个ItemListener以JComboBox做出反应.
此外,当你这样做:
Object isSelected = choiceBox.getSelectedItem();
Run Code Online (Sandbox Code Playgroud)
......你刚刚获得所选的值; isSelected只要组合框更新,你就不会神奇地绑定变量来更新.getSelectedItem()如果您想要新值,则需要再次调用.
| 归档时间: |
|
| 查看次数: |
4815 次 |
| 最近记录: |