我通过查询数据库创建并填充了一个组合框。当我在程序中执行了一些其他功能时,我想将组合框重置为原始值,即空白区域。当我这样做时,我得到程序抛出的异常。
代码如下:
创建组合框:
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
我已经尝试过setSelectedItem(0),但这并没有用。如何将其设置回原始空白区域?
提前致谢。
答案 0 :(得分:1)
如果空格意味着您没有选择任何内容,则可以使用tableNumberJComboBox.setSelectedItem(-1);
。那是你想做的吗?
答案 1 :(得分:0)
不要创建新的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();
}
});
}
}
如果这没有帮助,那么发布一个适合自己的SSCCE。而且我们无权访问您的数据库,因此SSCCE不应包含数据库逻辑。