У меня есть JTable
в приложении Swing. У меня есть JCheckBox
, чтобы переключить видимость столбца. Теперь, когда я выбираю строку из таблицы и перемещаю мышь над флажком, выбор таблицы, похоже, исчезает.JCheckBox messing up Выбор JTable
Я также добавил ListSelectionListener
к таблице в моем приложении. Когда я обычно выбираю ячейку со столом, она выдает два события изменения (один для мыши вниз, один для мыши). Однако, когда возникает странность, описанная выше, я получаю четыре события.
Вот упрощенный пример, который производит эффект:
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class JTableSelection extends JFrame {
public JTableSelection() {
super("Test");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JTable table = new JTable();
table.setModel(new DefaultTableModel(new String[] { "item", "another",
"one more" }, 3));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(new JCheckBox("Example"), BorderLayout.PAGE_START);
add(new JScrollPane(table), BorderLayout.CENTER);
}
public static void main(String[] args) {
new JTableSelection().setVisible(true);
}
}
Почему глюк выбор из, как это (или кто-нибудь знает)? Как я могу заставить его работать?
В случае это имеет значение, версия Java VM работает это:
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
EDIT. Я обнаружил странное поведение этого. Эффект полностью исчезает при максимизации кадра и появляется только при перезапуске приложения.
'добавить (таблица, BorderLayout.CENTER);' таблицы могут вести себя странно, если их не добавить в панель прокрутки. Попробуйте вместо этого добавить (новый JScrollPane (таблица), BorderLayout.CENTER); ' –
Я получаю четыре события. - стандартные события из ListSelectionModel – mKorbel
@mKorbel Почему я получаю только два события, когда отбор работает нормально? – Pietu1998