【问题标题】:Selecting An Entire Jlist in Swing在 Swing 中选择整个 Jlist
【发布时间】:2015-01-22 15:06:11
【问题描述】:

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

【问题讨论】:

  • “是否可以选择整个 jlist 而不是特定项目?” 可以。检查Java Docs.. 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、独立、正确的示例)。
  • @AndrewThompson 很抱歉,我本可以更好地解释自己。我想让 JList 在被选中时消失(空格,而不是其中一个可选项目)。这可能吗?

标签: java swing jlist


【解决方案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

【讨论】:

  • 对不起,我的解释不好。我想在选择 Jlist 时将其可见性设置为 false,而不是在有人单击 Jlist 中的项目时(然后它应该正常运行)。这可能吗?
  • “我想在 Jlist 被选中时将其可见性设置为 false” 听起来像是在制作另一个无法使用的 GUI。您所建议的并不是最终用户的“最不意外的道路”,所以为了他们,我希望您改变主意(或者只是不实现那个目标)。
  • “这可能吗?”我希望不会。假设用户错误地点击了白色区域并隐藏了列表。用户如何使列表再次可见?现在,假设您想出了一种使列表可见的方法。它对最终用户有何用处?对我来说毫无意义。我怀疑这里有一个XY problem。如果您以更清晰的方式说明需要实施的用例,您可能会得到更好的帮助。
  • 也许您正在寻找像collapsible panes 这样允许动态折叠-展开面板的东西。再次,这只是一个疯狂的猜测,直到你清楚地说明你想用这个实现什么。 @V.C.4
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 2014-03-05
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 2011-09-08
相关资源
最近更新 更多