Java 单击JTable单元格内的JComboBox时,JComboBox在JTable之外消失

Java 单击JTable单元格内的JComboBox时,JComboBox在JTable之外消失,java,swing,jtable,jbutton,jcombobox,Java,Swing,Jtable,Jbutton,Jcombobox,我对Java编程有些陌生。我正在创建一个程序,可以通过单击按钮将项目添加到待办事项列表中 我在表格的单元格中添加了一个JComboBox下拉列表,在用户输入JTextField和Add to list按钮之间的表格下方显示了相同的组合框 问题是:当我单击表单元格中的JComboBox时,位于用户输入和添加到列表按钮之间的JComboBox将消失。有人知道是什么导致了这种现象的消失吗 我正在使用Eclipse运行我的java程序,我在下面链接了屏幕截图 **注意:此项目尚未完成,因此并非所有功能都

我对Java编程有些陌生。我正在创建一个程序,可以通过单击按钮将项目添加到待办事项列表中

我在表格的单元格中添加了一个JComboBox下拉列表,在用户输入JTextField和Add to list按钮之间的表格下方显示了相同的组合框

问题是:当我单击表单元格中的JComboBox时,位于用户输入和添加到列表按钮之间的JComboBox将消失。有人知道是什么导致了这种现象的消失吗

我正在使用Eclipse运行我的java程序,我在下面链接了屏幕截图

**注意:此项目尚未完成,因此并非所有功能都能正常工作。“用户输入”和“添加到列表”按钮尚未运行。

包装清单; 导入javax.swing.*; 导入java.awt.event.*; 导入javax.swing.DefaultCellEditor; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 导入javax.swing.JLabel; 导入javax.swing.JScrollPane; 导入javax.swing.JTable; 导入javax.swing.JComboBox; 导入javax.swing.JButton; 导入javax.swing.table.AbstractTableModel; 导入javax.swing.table.TableModel; 公共类可编辑表{ 公共静态无效环[]a{ JFrame frame=新的JFrame待办事项列表; frame.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE; JTextField input=新建JTextField输入待办事项; 输入.设置100200,30; frame.addinput; JButton button=添加到列表的新JButton; 按钮。立根400100100,30; frame.addbutton; String[]columnTitles={待办事项,类别,已完成?}; 对象[][]数据项={{{玩具总动员3,电影/电视节目,新布尔False}, {陌生人的事情3,电影/电视节目,新布尔假}, {权力游戏,电影/电视节目,新布尔假}, {深海捕鱼、冒险、新布尔真的},}; TableModel model=新的可编辑TableModelColumnTitles、dataEntries; JTable table=新的JTablemodel; table.createDefaultColumnsFromModel; String[]cateogray={电影/电视节目、冒险、食品、其他}; JComboxComboBox=新的JComboxCateLogy; table.getColumnModel.getColumn1.setCellEditornew DefaultCellEditorcomboBox; comboBox.SetBounds230100130,30; comboBox.SetSelectedIndex 0; frame.addcomboBox; frame.addnew JScrollPanetable; frame.setSize600,200; frame.setVisibletrue; } } 类EditableTableModel扩展了AbstractTableModel{ 字符串[]列标题; 对象[][]数据项; 整数行数; 公共可编辑的TableModelString[]列标题,对象[][]数据项{ this.columnTitles=columnTitles; this.dataEntries=数据条目; } 公共整数getRowCount{ 返回dataEntries.length; } 公共整型getColumnCount{ 返回列长度; } 公共对象getValueAtint行,int列{ 返回数据项[行][列]; } 公共字符串getColumnNameint列{ 返回列标题[列]; } 公共类GetColumnClasint列{ 返回getValueAt0,column.getClass; } 公共布尔值isCellEditableint行,int列{ 返回true; } public void setValueAtObject值,int行,int列{ 数据项[行][列]=值; } }
您需要为JTable创建一个JComboBox,并为公式创建一个单独的JComboBox。重复使用同一个变量不会起作用,也不会产生奇怪的结果

...
String[] cateogry = { "Movie/TV Show", "Adventure", "Food", "Other"};
JComboBox tableComboBox = new JComboBox(cateogry);
table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(tableComboBox));

JComboBox comboBox = new JComboBox(cateogry);
comboBox.setBounds(230,100,130,30);
comboBox.setSelectedIndex(0);
frame.add(comboBox);
...
如果这有助于解决问题,请告诉我。