当前位置: 首页 > 知识库问答 >
问题:

JList查找单击了什么项

公孙盛
2023-03-14

为了在JList中的项目旁边获得图标,我按照教程创建了一个基本类来存储我的JList项目。然后我使用这个类作为我的listmodel来打印每个项目的图标和文本。

Im还使用getListCellRendererComponent来打印文本和图标。

我的ListItem类如下所示:

public class ListItem 
{
    private ImageIcon icon = null;
    private String text;

    public ListItem(String iconpath, String text) 
    {
        icon = new javax.swing.ImageIcon(getClass().getResource(iconpath));

        this.text = text;
    }       

    public ImageIcon getIcon() 
    {
        return icon;
    }

    public String getText() 
    {
        return text;
    }
}
public class MyCellRenderer
extends JPanel
implements ListCellRenderer
{
    private JLabel label = null;

    public MyCellRenderer()
    {
        super(new FlowLayout(FlowLayout.LEFT));

           setOpaque(true);


        label = new JLabel();
        label.setOpaque(false);

        add(label);                
    }


    public Component getListCellRendererComponent(JList list, 
                                                  Object value, 
                                                  int index,    
                                                  boolean iss,  
                                                  boolean chf)  
    {


        label.setIcon(((ListItem)value).getIcon());

        label.setText(((ListItem)value).getText());

        if(iss) setBackground(Color.lightGray); 
        else setBackground(list.getBackground()); 

        return this;
    }
}
listmodel = new DefaultListModel();

ListItem item0 = new ListItem("/resources/icnNew.png", "Element 1"),
         item1 = new ListItem("/resources/icnNew.png", "Element 2");

listmodel.addElement(item0);  
listmodel.addElement(item1);


list = new JList(listmodel);

list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);

list.setFixedCellHeight(32);        

list.setCellRenderer(new MyCellRenderer());

menuScrollPane = new JScrollPane(list);

pnlVisitorsList.add(menuScrollPane, BorderLayout.CENTER);

例如元素1、元素2

我想看看所有的项目,并改变名称和图标…

共有1个答案

富凯风
2023-03-14
// LOOP

// loop through all elements in the list
for (int i=0; i<listmodel.size(); i++) {

    // get the listitem associated with the current element
    final Object object = listmodel.get(i);
    if (object instanceof ListItem) {
        ListItem listitem = (ListItem) object;

        // use getText() to get the text asociated with the listitem
        System.out.print(listitem.getText());

        // test if the current item is selected or not
        if (list.isSelectedIndex(i)) {
            System.out.print(" (selected)");
        }

        // next
        System.out.println();
    }
}

// CHANGE NAME + ICON

// create a new list item
ListItem itemNew = new ListItem("/resources/icnNew.png", "Element 3");

// replaced the first item in the list with the new one
listmodel.set(0, itemNew);
 类似资料:
  • 本文向大家介绍` 单击 `和` 单击 `有什么区别?相关面试题,主要包含被问及` 单击 `和` 单击 `有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 绑定函数有三种方法 1、constructor绑定 2. 使用时绑定 3. 使用箭头函数 这种最简单 不用考虑this的指向问题 (但是会造成额外的渲染) 以上三种方法,第一种最优。 因为第一种构造函数只在组件初始化的时候执行一次, 第二种

  • 问题内容: 我无法相信这行不通。 我有一个JList。我将其渲染器设置如下。基本上是一个带有两个标签和一个按钮的JPanel。 这是我的TopBottomCellRenderer。 该列表可正确呈现,但不可单击。单击它没有任何作用。 我该如何工作? 问题答案: 渲染器只是在组件上绘制的“橡皮图章”。它们不是实时的交互式组件。 请参阅以下答案:JList中的JButton以获得一种可能的解决方案。实

  • 点击一个元素后,如何使用selenium找到当前url?我有这个网站:http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622 我有代码(假设所有相关的库都已导入) 我运行代码,它只返回原来的网址是http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622 我怎么能找到的网

  • 错误:NoSuChelementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//td[@class='c($PrimaryColor)W(51%)']”}(会话信息:chrome=77.0.3865.120) 我的代码如下: 这是我试图从“https://finance.yahoo.com/quote/goog?p=goog”中搜索

  • 我正在尝试实现一个名为“五连胜”的游戏。我创建了一个15×15的列表来放置按钮。(我使用range(16),因为我还需要一行和一列来显示行号和列号) 我希望我的实现会像点击一个按钮时,它会变成一个标签。但是我不知道用户点击了哪个按钮。 我如何才能实现这一点?谢谢 在Python TKinter?中,有一个类似的问题,即如何确定哪个按钮被按出了按钮网格?。但我不太明白。

  • 问题内容: 在我当前的swing项目中,我有一个JList显示所有活动套接字的窗口,每个单元都有一个JButton关闭该套接字的窗口。但是JButton单元格中的不可点击:不会触发监听器。 我将代码修改为最少,如下所示。 该列表看起来不错,但其中的按钮不可单击。我是错了还是JList不支持JButton被解雇? 问题答案: 尽管您无法获得与普通按钮单击相同的视觉效果,但以下示例似乎可行。也许某个绘