我在SO和其他地方找到了答案,但找不到答案。是否可以选择整个jlist而不是特定项目?例如,如果用户单击jlist的白色区域,我可以调用一个方法,将该jlist的名称放在HashMap中,或调用另一个方法来整体更改列表。希望代码能给你一个想法。任何信息都会有帮助。谢谢。
final JList list_1 = new JList(list1);
list_1.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent arg0) {
//make entire list disappear when selected
list_1.setVisible(false);
}
});
GridBagConstraints gbc_list_1 = new GridBagConstraints();
gbc_list_1.gridheight = 3;
gbc_list_1.insets = new Insets(0, 0, 5, 5);
gbc_list_1.fill = GridBagConstraints.BOTH;
gbc_list_1.gridx = 5;
gbc_list_1.gridy = 0;
panel.add(list_1, gbc_list_1);
答案 0 :(得分:1)
是否可以选择整个jlist而不是特定项?
是的,只要ListSelectionModel允许您这样做。请参阅Selecting Items in a List。
例如,如果用户点击jlist的白色区域...
更好的是拥有一个“全选”按钮并使用ListSelectionModel
,这样你根本不必弄乱焦点子系统。例如:
final JList list = new JList();
...
Action selectAllAction = new AbstractAction("Select All") {
@Override
public void actionPerformed(ActionEvent e) {
list.getSelectionModel().setSelectionInterval(0, list.getModel().getSize() - 1);
}
};
...
JButton selectAllButton = new JButton(selectAllAction);
...我可以调用一个方法,将jlist的名称放在HashMap中,或者调用另一个方法来改变整个列表。
我不知道你是什么意思整个列表改变或者你为什么要把那个jlist的名字放在HashMap 中,所以我'我无法再帮你了。要获得更好的帮助,请添加SSCE