我通过查询数据库创建并填充了一个组合框。当我在程序中执行了一些其他功能时,我想将组合框重置为原始值,即空格。当我这样做时,程序抛出了一个异常。
代码如下:
创建组合框:
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),但这不起作用。如何将其设置回原来的空白?
提前致谢。
如果空白意味着您没有选择任何内容,您可以使用
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();
}
});
}
}
如果这没有帮助,请发布您自己的正确 SSCCE。而且我们无权访问您的数据库,因此您的 SSCCE 不应包含数据库逻辑。
我也遇到了同样的问题,你可以使用:
tableNumberJComboBox.getSelectionModel().select(-1);
就我而言(javaFx),它很有帮助! ;希望对你也有帮助...