2014-12-01 87 views
0

我有34个图像标签我无法确定如何在生病时单击标签本身以获得选定内容,并在右下角“Selected:”在每个标签选择上进行更改。创建JLabel数组

34 Labels

标签变量名是从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; 
    } 

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

+0

请如果有人能帮助我。 – 2014-12-01 23:37:26

+0

可能会向每个JLabel – enrique7mc 2014-12-01 23:38:03

+0

添加一个MouseListener点击事件,但是除了34次之外,没有其他方法可以这么做吗?并且我还需要将它们存储 – 2014-12-01 23:42:31

回答

0

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

这里有一个单独的处理程序,并将标签放入数组中,以便稍后(循环外)使用它们。

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 
} 
+0

这是什么'somePanel.add(标签);'?并请,如果你可以使代码复制和粘贴,因为它给我错误'for(int i = 0;我 2014-12-02 00:13:34

+0

因为你做过不包括构建您的JFrame等的代码我做了一些假设。主要是您在一个名为selected的变量中放置了一些JLabel,您要在其中放置点击标签的编号,以及一个名为somePanel的JPanel,您将标签附加到该标签上。您需要修改此代码以符合您的代码。 – 2014-12-02 00:17:51

+0

是的,但我想存储的数字也是这样,当生成/中奖号码将可用于获得这两个阵列 – 2014-12-02 00:32:39