【问题标题】:Create JLabel Array创建 JLabel 数组
【发布时间】:2014-12-01 23:05:29
【问题描述】:

我有 34 个带有图像的标签,当我单击标签本身以被选中并在右下角的“已选择:”以在每个标签选择时进行更改时,我不知道该怎么做。

标签变量名称来自n1 to n34,到目前为止我有这个代码,但在列表中getSelectedNumbers()

List<JLabel> lotteryBoxes = new ArrayList<>();

List<JLabel> getSelectedNumbers() {
    List<JLabel> numbers = new ArrayList<>();
    Iterator<JLabel> it = lotteryBoxes.iterator();
    while (it.hasNext()) {
        JLabel nr = it.next();
        if (nr.isCursorSet()) {
            numbers.add(nr);
            Selected.setText("Selected: " + nr);
        }
        return numbers;
    }

我不知道该怎么办,请给我一些答案。

【问题讨论】:

  • 如果有人可以帮助我。
  • 可能为每个 JLabel 添加一个 MouseListener 点击事件
  • 但是除了 34 次之外没有其他方法吗?我还需要存储它们
  • 你可以循环生成它们
  • 如果你能告诉我一些例子吗?

标签: java arrays list labels


【解决方案1】:

如果您在循环中创建标签,则可以向它们添加处理程序。可以是检查哪个标签被点击的同一个处理程序,或者每个标签都有一个单独的处理程序。

这里每个都有一个单独的处理程序,标签被放入一个数组中,以便您以后可以使用它们(在循环之外)。

int numberOfLabels = 34;
JLabel[] labels = new JLabel[numberOfLabels];
for (int index=0; index<numberOfLabels; index++) {
    String labelText = "" + (index + 1);
    final JLabel label = new JLabel(labelText));
    final int labelNumber = index + 1;
    label.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // do something, you can use "label" in here, eg:
            selected.setText(label.getText());
            // you have access to the number in "labelNumber"
        }
    });
    somePanel.add(label);
    labels[index] = label; // save the label if you need to access it later
}

【讨论】:

  • 这是什么somePanel.add(label);?如果你可以复制和粘贴代码,因为它在for (int i=0; i&lt;numberOfLabels; i++) { 给了我错误,它说“非法开始类型”非常感谢你
  • 由于您没有包含构建 JFrame 等的代码,因此我做了一些假设。主要是你在一个名为 selected 的变量中有一些 JLabel,你想在其中放置单击标签的编号,以及一个名为 somePanel 的 JPanel,你将标签附加到。您需要修改它以匹配您的代码。
  • 是的,但我也想存储数字,以便在生成/中奖时可以获取两个数组
  • 只是做了一个小改动,这样您就可以直接在 mouseClicked() 处理程序中访问该数字。从这里你可以将它添加到一些中奖号码列表中,或者任何你想要的。
  • 谢谢你,但我真的不明白这不认为你是错误的我只是可能太累了但我想再想想一次顺便说一句你有什么可以聊天的吗直接和你在一起?再次感谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2012-07-18
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多