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。