У меня есть JPanel, который содержит JTable и JButton. Желаемая функциональность: - для каждой строки таблицы, которую щелкает пользователь, на панели появляется вторая таблица - если нажимается кнопка, появляется всплывающая таблица.
Для таблицы я реализовал прослушиватель мыши следующим образом:
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
System.out.println("Table: " + row + " " + col);
// perform some table processing here
// the new table to appear is data1
// update the content of the panel dataP
dataP.removeAll();
dataP.setLayout(new BorderLayout());
dataP.add(new JScrollPane(data1), BorderLayout.NORTH);
dataP.updateUI();
}
}
});
Слушатель работает нормально, пока я не нажму кнопку и не появится всплывающая таблица. После этого, если я нажму на исходную JTable, я всегда получаю, что выбранная строка/столбец равна -1, -1. Почему это происходит? Поскольку таблица и кнопка — это два отдельных компонента (к тому же размещенных на разных панелях), как одно может влиять на другое? Заранее спасибо!
Don't use the updateUI() method.
Этот метод используется для изменения LAF. Когда вы добавляете/удаляете компоненты из видимого графического интерфейса, вы должны использоватьrevalidate() and repaint()
. - person camickr   schedule 19.01.2014