Java 将组合框重置为第一项

Java 将组合框重置为第一项,java,combobox,default,reset,Java,Combobox,Default,Reset,我通过查询数据库创建并填充了一个组合框。当我在程序中执行了一些其他功能后,我想将组合框重置为原始值,即空白。当我这样做时,程序会抛出一个异常 代码如下: 要创建组合框,请执行以下操作: tableNumberJComboBox = new JComboBox(); tableNumberJComboBox.setBounds( 168, 26, 80, 20 ); tableNumberJComboBox.setFont(new Font("Serif"

我通过查询数据库创建并填充了一个组合框。当我在程序中执行了一些其他功能后,我想将组合框重置为原始值,即空白。当我这样做时,程序会抛出一个异常

代码如下:

要创建组合框,请执行以下操作:

    tableNumberJComboBox = new JComboBox(); 
    tableNumberJComboBox.setBounds( 168, 26, 80, 20 );        
    tableNumberJComboBox.setFont(new Font("Serif", Font.PLAIN, 12)); 
    tableNumberJComboBox.addItem("");
    waiterJPanel.add(tableNumberJComboBox);
然后填充它:

private void loadTableNumbers()
{
    try 
    {   
        myStatement = null; 
        myResultSet = null; 
        myStatement = myConnection.createStatement(); 

        myResultSet = myStatement.executeQuery("SELECT tableNumber FROM restauranttables");
        while (myResultSet.next()) 
        {
            tableNumberJComboBox.addItem(myResultSet.getInt(1));
        }
        myResultSet.close(); 
    }
    catch(SQLException sqlexception) 
    {
        sqlexception.printStackTrace(); 
    }
} // end method loadTableNumbers
然后将表格编号重置为空白:

    tableNumberJComboBox.setSelectedItem("");
例外情况是:

线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:java.lang.String不能转换为java.lang.Integer

我已尝试设置SelectEdItem(0),但这不起作用。如何将其设置回原始空白


提前谢谢

您可以使用
tableNumberJComboBox.setSelectedItem(-1),如果空白表示未选择任何内容。您希望这样做吗?

不要创建新的JComboBox,只需使用现有的组合框重新加载数据:

可能是这样的:

tableNumberJComboBox.removeAllItems();
loadTableNumbers();
编辑:

以上建议对我来说很好:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SSCCE extends JPanel
{
    private JComboBox<Integer> comboBox = new JComboBox<Integer>();
    private int value = 10;

    public SSCCE()
    {
        add( comboBox );
        addItems();

        JButton reset = new JButton( "Reset" );
        reset.addActionListener( new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                comboBox.removeAllItems();
                addItems();
            }
        });
        add( reset );
    }

    private void addItems()
    {
        for (int i = 0; i < 5; i++)
            comboBox.addItem( new Integer(value++) );
    }

    private static void createAndShowUI()
    {
        JLabel label = new JLabel(new ImageIcon("mong.jpg"));

        JFrame frame = new JFrame("SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( new SSCCE() );
        frame.setLocationByPlatform( true );
        frame.pack();
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类SSCCE扩展了JPanel
{
私有JComboBox组合框=新JComboBox();
私有int值=10;
公共服务
{
添加(组合框);
addItems();
JButton reset=新JButton(“reset”);
reset.addActionListener(新ActionListener()
{
已执行的公共无效操作(操作事件e)
{
comboBox.removeAllItems();
addItems();
}
});
添加(重置);
}
私有void附加项()
{
对于(int i=0;i<5;i++)
comboBox.addItem(新整数(值++);
}
私有静态void createAndShowUI()
{
JLabel=newjlabel(newimageicon(“mong.jpg”);
JFrame=新JFrame(“SSCCE”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(新的SSCCE());
frame.setLocationByPlatform(真);
frame.pack();
frame.setVisible(true);
}
公共静态void main(字符串[]args)
{
invokeLater(新的Runnable()
{
公开募捐
{
createAndShowUI();
}
});
}
}

如果这对你没有帮助,那就贴一张你自己的合适的SSCE。我们无法访问您的数据库,因此您的SSCCE不应包含数据库逻辑。

谢谢您的帮助,但我已经尝试过了,它将值设置为-1,这也不是我想要的!嘿,为您的帮助干杯,这是一个很好的主意,但是当我尝试这样做并重新运行loadTableNumbers()函数时,只有表1被加载并引发异常?好吧,做一些基本的调试。是否添加了System.out.println(..)语句来验证查询中返回了多少行数据。至于例外,我不是一个读心术的人,我猜不出例外是什么。是的,我试过调试它,返回的记录数相同。但是当我尝试在removeAllItems()之后重新填充时,它会抛出与上面相同的异常。我注意到的是,如果我不删除所有项,而是调用loadTableNumbers(),则该表会再次正确添加相同的十个表号,因此,当我尝试重新填充时,removeAllItems会导致问题?
我尝试过调试它,
那么您应该创建一个[SSCCE]()帮助您进行调试,以便隔离问题所在。如果您得到一个ClassCastException,听起来好像您试图向组合框中添加一个无效的对象。请参见编辑以了解简单的SSCE。