Java JComboBox的输出被打印两次
我试图从组合框中获取所选值以显示在提示窗口中,但提示窗口显示两次。我没有复制任何代码,但为什么会发生这种情况 代码片段:-Java JComboBox的输出被打印两次,java,user-interface,jframe,jcombobox,Java,User Interface,Jframe,Jcombobox,我试图从组合框中获取所选值以显示在提示窗口中,但提示窗口显示两次。我没有复制任何代码,但为什么会发生这种情况 代码片段:- package interfaceGUI; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.sw
package interfaceGUI;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class BirthdayForm extends JFrame{
private JLabel chooseItem;
private JLabel chooseQuantity;
private JComboBox items;
private JTextField quantity;
private JTextArea selection;
private JButton Rent;
private JButton Edit;
private JButton Cancel;
private JPanel choose;
private JPanel forButton;
private String list[] = {"Chair", "Napkin", "Garland", "Mirrored Ball",
"Floral Vases", "Large Balloons", "Square Jars"};
public BirthdayForm()
{
super("Birthday Party Supplies Rental Form");
setLayout(new FlowLayout());
chooseItem = new JLabel("Choose Item:");
items = new JComboBox(list);
chooseQuantity = new JLabel("Choose Quantity:");
quantity = new JTextField(5);
choose = new JPanel();
choose.setLayout(new GridLayout(1,4));
choose.add(chooseItem);
choose.add(items);
choose.add(chooseQuantity);
choose.add(quantity);
add(choose);
selection = new JTextArea(15,30);
add(selection);
Rent = new JButton("Rent");
Edit = new JButton("Edit List");
Cancel = new JButton("Cancel");
forButton = new JPanel();
forButton.setLayout(new GridLayout(1,3));
forButton.add(Rent);
forButton.add(Edit);
forButton.add(Cancel);
add(forButton);
comboHandler handler = new comboHandler();
items.addItemListener(handler);
}
public class comboHandler implements ItemListener
{
public void itemStateChanged(ItemEvent event)
{
if(event.getSource() == items)
{
String item = (String) items.getSelectedItem();
if(item == "Chair")
{
JOptionPane.showMessageDialog(null, "Chair" , "Items",
JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
}
}
}
}
我做错了什么?我找不到我的错误。请提供帮助。这是您需要的更改,请检查项目是否已选中
public void itemStateChanged(ItemEvent event)
{
if(event.getSource() == items)
{
int state = event.getStateChange();
if(state == ItemEvent.SELECTED)
{
String item = (String) items.getSelectedItem();
JOptionPane.showMessageDialog(null, item , "Items", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
}
}
从事件中获取项目状态,并检查该状态是否为选中状态,int state=event.getStateChange();如果(state==ItemEvent.SELECTED),您能提供一个更完整的答案吗?当然,请参阅我的答案,itemStateChange会被触发两次,一次用于取消选择的项,一次用于选择的项更好的选择可能是使用ActionListener而不是Head。非常感谢。$Damini,我不清楚你的问题,你想知道下一个列表项目的声明,关于下一个列表项目,你想展示什么?这是一个愚蠢的问题,对不起,哈哈。我没有仔细看你的答案。你解决了我的问题,非常感谢。“如果(item==“Chair”)”-真的吗?@MadProgrammer,谢谢你的提醒,我刚刚修改了代码。我只是想通过修改代码来回答这个问题。但如果使用if语句,则消息对话框将仅在选择“chair”时显示。