【问题标题】:Loop controls in JAVA. How to control i=1 to n.. button[i].setText() ? I dont want to as foreachJAVA 中的循环控件。如何控制 i=1 到 n.. button[i].setText() ?我不想像 foreach
【发布时间】:2016-02-11 06:26:21
【问题描述】:

我有 6 个label controls 以 java 形式 (JFrame):label1label2 等,直到 label6。如何在这样的循环中“引用”控件:

for (i=1; i<=6; i++) 
{ 
    label[i].text = ...; //Some line of code here
}

【问题讨论】:

  • 那么.. 你在问什么?这段代码有效吗?如果不是,它做了什么你没想到的?
  • 它不适用于 JAVA :( 我需要循环控制..
  • 字符串 btnName; JButton 按钮 = new JButton(); for(int i=1;i
  • 此代码不适用于 Java
  • "寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确的问题陈述对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。 stackoverflow.com/help/on-topic

标签: java for-loop button jframe controls


【解决方案1】:

创建一个JLabel 数组并用循环填充它:

JLabel[] labs = new JLabel[6];

for (int i = 0 ; i < labs.length ; i++){
    labs[i] = new JLabel("Whatever");
}

【讨论】:

  • 我不想创建对象。有可能吗?
  • @AliPinar 创建对象是什么意思?
  • @AliPinar 更具体。
【解决方案2】:

首先你需要阅读https://stackoverflow.com/help/how-to-ask

您需要获取 Jframe 中的标签。

//如果你没有 contentpane 使用 jframe.getComponents();

foreach(Component comp : jframe.getContentPane().getComponents()){
    System.out.println(comp.getLabel());
    comp.setLabel("Your Label");
}

【讨论】:

    【解决方案3】:

    由于 OP 似乎想将它们命名为 label1label2label3 等,因此此代码将执行此操作:

    for (i = 1; i <= 6; i++) {
        label[i - 1].text = "label" + i;
    }
    

    有两点需要注意:

    label[i - 1]:数组编号从零开始。第一个元素是array[0]

    第二件事:"label" + i

    这是一个串联的例子。我使用字符串"label" 并将i 附加到它的末尾。这不是数字加法,因为我不能添加像数字这样的字符串!相反,结果是"label?"

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 2022-01-13
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2013-04-26
      • 1970-01-01
      相关资源
      最近更新 更多