【问题标题】:single function call on click any label JInternalFrame Java Swing单击任何标签 JInternalFrame Java Swing 时调用单个函数
【发布时间】:2015-11-29 18:28:13
【问题描述】:

我是学习 Java 的新手。

我正在创建一个 JInternalFrame,其中包含 28 个矩阵形式的标签。我想在点击时将标签文本从 - 更改为 +,反之亦然。

我可以将 EventListeners 一个一个地添加到每个标签中。但我想要一些简单的解决方案,我不需要为每个标签单独添加事件监听器。很久以前,我在 VisualBasic 中的按钮数组上尝试过相同的方法。

【问题讨论】:

  • 这意味着我需要手动创建一次包含 28 个标签的列表。

标签: java swing


【解决方案1】:

但我想要一些简单的解决方案,我不需要为每个标签单独添加事件监听器

为什么?您可以共享 MouseListener。然后,您只需在创建标签时将侦听器添加到标签。这是更好的方法,然后尝试在事后搜索单击的标签。

例如:

MouseListener ml = new MouseAdapter()
{
    @Override
    public void mousePressed(MouseEvent e)
    {
        JLabel label = (JLabel)e.getComponent();
        label.setText( label.getText().equals("-") ? "+" : "-" );
    }
}

for (int i = 0; i < 28)
{
    JLabel label = new JLabel("-");
    label.addMouseListener( ml );
    panel.add(label);
}

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2016-05-31
    • 2013-02-16
    • 2017-04-11
    相关资源
    最近更新 更多