【发布时间】:2019-02-25 16:57:30
【问题描述】:
嘿,我已经花了几个小时来解决这个问题。目前我必须单击单元格,然后再次单击才能打开下拉列表(这是一个日期选择器)。
我的目标是,一旦检测到在正确列中的单元格内点击,就使用代码。
我试过的代码是:
comboBox.setPopupVisible(true);
和
table.editCellAt(0, 4);
和
comboBox.showPopup();
目前我确实有那个/单元格是可编辑的。虽然当我运行程序并单击其中一个单元格时,这是它给我的错误:
我这样定义我的组合框:
public static JComboBox comboBox = new JComboBox();
我是从另一个班级打电话给这个的。
类1:
if (selCol == 4) { try { TblWithDropdown.dropBox(); } catch (InterruptedException e) { e.printStackTrace(); } }
现在是我的另一堂课:
TblWithDropdown 类:
@SuppressWarnings("rawtypes") public static JComboBox comboBox = new JComboBox(); public class TblWithDropdown { public static void dropBox() throws InterruptedException { comboBox.showPopup(); //table.editCellAt(0, 4); comboBox.setPopupVisible(true); } }
它给我的错误是:
线程“AWT-EventQueue-0”中的异常 java.awt.IllegalComponentStateException:组件必须显示在屏幕上才能确定其位置 在 java.awt.Component.getLocationOnScreen_NoTreeLock(Unknown Source)
从视觉上看,这是我的带有组合框的表格的样子:
[ [
帮助解决这个问题会很棒!
更新 1
更新 2
_al = alldata.fillInData("SELECT fname FROM users");
String[] testers = new String[_al.size()];
TblWithDropdown.comboBox = new JComboBox(_al.toArray(testers));
TblWithDropdown.table.getColumnModel().getColumn(3)
.setCellEditor(new DefaultCellEditor(TblWithDropdown.comboBox));
JXDatePicker res = new JXDatePicker();
res.setFormats(DateFormat.getDateInstance(DateFormat.MEDIUM));
res.setDate(new Date());
res.getMonthView().setDayForeground(Calendar.SUNDAY, Color.RED);
DatePickerCellEditor testser = new DatePickerCellEditor(new SimpleDateFormat("dd/MM/yyyy HH:mm:ssZ"));
testser.setClickCountToStart(0);
testser.setFormats(new SimpleDateFormat("dd/MM/yyyy HH:mm:ssZ"));
TableColumn dateColumn = TblWithDropdown.table.getColumnModel().getColumn(4);
dateColumn.setCellEditor(testser);
【问题讨论】:
-
@TT 这将需要大量代码......而且它很可能。无论如何都不会运行。
标签: java swing jtable jcombobox