Эй, все, что я должен был понять это в течение нескольких часов.В настоящее время я должен щелкнуть ячейку, а затем снова щелкнуть, чтобы открыть раскрывающийся список (это средство выбора даты).
Моя цель - использовать код, как только он обнаружит щелчок внутри ячейки.это в правильном столбце.
Код, который я пробовал:
comboBox.setPopupVisible(true);
и
table.editCellAt(0, 4);
и
comboBox.showPopup();
В настоящее время яУ меня есть / клетки как редактируемые.Хотя, когда я запускаю программу и нажимаю на одну из этих ячеек, это ошибка, которая дает мне:
Я определяю свое поле со списком так:
public static JComboBox comboBox = new JComboBox();
И я звонюэто из другого класса.
class1:
if (selCol == 4) {
try {
TblWithDropdown.dropBox();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
А теперь мой другой класс:
TblWithDropdown class:
@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 (Неизвестный источник)
Визуально вот как выглядит моя таблица с полем:
[ [
Справка была бы полезна для решения этой проблемы!
ОБНОВЛЕНИЕ 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);