Java 将属性更改为由不带变量名的方法创建的JButton

Java 将属性更改为由不带变量名的方法创建的JButton,java,methods,jbutton,Java,Methods,Jbutton,我用一个方法创建了一些jbutton,但我没有给它们一个可以调用的变量。我想知道,在从另一个方法创建按钮之后,是否可以以某种方式更改文本。我知道我可以在按下按钮时获得操作命令,但我想在不按下按钮的情况下更改按钮文本。我可以给按钮起个名字,但是我不愿意。因为我只打算给他们中的一半打电话,所以我认为这不是一个好主意。还是这样 JButton button1=按钮(0,0,0) 您可以从actionEvent中按下按钮 @Override public void actionPerfo

我用一个方法创建了一些jbutton,但我没有给它们一个可以调用的变量。我想知道,在从另一个方法创建按钮之后,是否可以以某种方式更改文本。我知道我可以在按下按钮时获得操作命令,但我想在不按下按钮的情况下更改按钮文本。我可以给按钮起个名字,但是我不愿意。因为我只打算给他们中的一半打电话,所以我认为这不是一个好主意。还是这样

JButton button1=按钮(0,0,0)


您可以从actionEvent中按下按钮

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton)e.getSource();

    }

为什么不把它们放在公共阵列列表中

ArrayList<JButton> buttons = new ArrayList<JButton>();

public JButton buttons(int coord, int coord1, int number) {
   JButton box = new JButton("");
   box.setFont(new Font("Tahoma", Font.PLAIN, 60));
   box.setBounds(coord, coord1, 100, 100);
   contentPane.add(box);
   box.addActionListener(this);
   box.setActionCommand(Integer.toString(number));
   buttons.add(box);//Add it here
   return box;
}

我可以给按钮起个名字,但是我不愿意。因为我只打算给他们中的一半打电话,所以我认为这不是一个好主意。还是这样

你在给自己制造麻烦。即使你可能只需要他们中的一小部分人/一个都不需要,不为他们保留参考资料也有很大的优势

如果您有太多的jbutton,并且不希望每个jbutton都有一个单独的变量名,那么可以使用jbutton的数组/集合

JButton[] btns = new JButton[size];
//or
ArrayList<JButton> btns= new ArrayList<JButton>();
更改特定按钮的文本:

for(JButton b : btns)
    btns.setText("whatever here");
btns[x].setText("whatever here");       //from array
btns.get(x).setText("whatever here");   //from list

或者,如果您不保留参考资料。您可以从内容窗格中获取按钮列表:

Component[] components = myPanel.getComponents();    
for(Component c : components)
    if(c instanceof JButton)
        ((JButton)c).setText("whatever here");

“我知道我可以在按下按钮时获取操作命令,但我想在不按下按钮的情况下更改按钮文本。”因此,这需要我按下按钮:/I我认为您可以通过某种方式从面板或框架中获取按钮列表,但是无论如何,您需要一些标识符来区分按钮
我想知道,在从另一种方法创建按钮之后,是否可以以某种方式更改文本
当然可以,只要您保留所创建按钮的引用。我看不出这里有什么问题。“我只调用其中的一半”是否可以使用此方法只更改某些特定的内容?这就是我编写if语句的原因,您可以确保只修改所需的JButtonsto@Bug我想说,我们是否能让它工作将取决于您的编码技能(即我们如何实现它).当然有可能,但ArrayList是创建的,这样我们就不必使用数组之类的东西附加到definite Array[]的数组时间。copyOf@Bug实际上,如果您想动态地删除或添加swing组件到面板中,它可能会表现出危险的行为。大多数情况下,当我们创建GUI时,可以预先确定组件的数量,例如按钮的数量。并非总是需要使用ArrayList。告诉我,你创建的swing应用程序中有多少需要任意数量的组件?@Bug
不是真的,他不是一次添加所有的JButtons,所以数组无法工作。
你自相矛盾。每次创建swing应用程序时都依赖特定数量的组件是一种可怕的编码道德。
btns[x].setText("whatever here");       //from array
btns.get(x).setText("whatever here");   //from list
Component[] components = myPanel.getComponents();    
for(Component c : components)
    if(c instanceof JButton)
        ((JButton)c).setText("whatever here");