Java 如何将Button对象命名为字符串变量带来的对象

Java 如何将Button对象命名为字符串变量带来的对象,java,swing,Java,Swing,这就是我用来创建随机按钮的方法。但我不能每次都手动给按钮命名。我希望名称按钮对象包含字符串变量所包含的内容 public void createButton(int x, int y, String s) { try { JButton btn1 = new JButton(); jPanel1.add(btn1); btn1.setLocation(x, y); btn1.setSize(50, 50);

这就是我用来创建随机按钮的方法。但我不能每次都手动给按钮命名。我希望名称按钮对象包含字符串变量所包含的内容

public void createButton(int x, int y, String s) {
    try {
        JButton btn1 = new JButton();
        jPanel1.add(btn1);
        btn1.setLocation(x, y);
        btn1.setSize(50, 50);
        btn1.setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e);
    }
}
构造函数jbuttonext在内部调用settextext。所以以后的btn1.setTexttext也是一样的。从代码中:

public void createButton(int x, int y, String s) {
    try {
        JButton btn1 = new JButton(s);
        jPanel1.add(btn1);
        btn1.setLocation(x, y);
        btn1.setSize(50, 50);
        btn1.setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e);
    }
}

请记住:setText和setName不是一回事

根据您对另一个答案的评论:


我不想更改按钮名。我想更改按钮变量名。在本例中,是btn1更改字符串s带来的内容

Java不是这样设计的,如果要为每个JButton保留引用,可以创建一个数组:

/**
 * Creates a button with initial text and an icon.
 *
 * @param text  the text of the button
 * @param icon  the Icon image to display on the button
 */
public JButton(String text, Icon icon) {
    // Create the model
    setModel(new DefaultButtonModel());

    // initialize
    init(text, icon);
}
然后像这样使用它们:

JButton buttonsArray[] = new JButton[5]; //Or any amount of buttons
buttonArray[i].setText("Hello"); //Or whatever method you want to call
buttonList.get(i).setText("Hello");
jPanel1.add(buttonsArray[i]);
jPanel1.add(buttonsList.get(i));
然后像这样使用它:

ArrayList <JButton> buttonsList = new ArrayList <JButton>();
现在,您的createButton方法应该如下所示:

JButton buttonsArray[] = new JButton[5]; //Or any amount of buttons
buttonArray[i].setText("Hello"); //Or whatever method you want to call
buttonList.get(i).setText("Hello");
jPanel1.add(buttonsArray[i]);
jPanel1.add(buttonsList.get(i));
在这个问题中,您可以看到一个使用JRadioButton数组的类似示例

重要提示 最后,我需要将这一点添加到我的答案中,不要手动设置每个JComponent的位置/边界,而是使用适当的工具来完成这项工作,并在需要时在它们之间创建空间

我打赌您使用的是空布局,虽然这似乎是创建GUI的最佳和最简单的方法,但您创建的GUI越多,您会因此而出现更多错误,并且在维护它时会遇到更多麻烦

见:和


我希望这有助于

将字符串s传递给JButton的构造函数。我可以在哪里编写s?不要发布代码的图片。将实际代码复制到您的问题中,每行缩进四个空格,以便显示为一个格式化块。我不想更改按钮名称。我想更改按钮变量名称。在本例中,它是btn1更改为字符串s带来的内容。非常感谢您的帮助,我的朋友。这就是我需要的:@Silver我很高兴它提供了帮助,那么别忘了回答:
public JButton createButton(String s) {
    JButton btn1 = new JButton(s);
    //Add more code here
    return btn1;
}