在Swing中选择整个Jlist

时间:2015-01-22 15:06:12

标签: java swing jlist

我在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);

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