将属性更改为由没有变量名的方法创建的JButton

时间:2015-12-08 19:17:14

标签: java methods jbutton

我用一个方法创建了一些JButton,但是我没有给它们一个我可以调用它们的变量。我想知道是否可以在从另一个方法创建按钮后以某种方式更改文本。我知道我可以在按下按钮时获取动作命令,但我想更改按钮文本,而不是按下它。我可以给按钮命名,但不愿意。因为我只会打电话给他们中的一半,然后我认为这不是一个好主意。或者是吗?

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

    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));

       return box;
    }

public static void main(String[] args) {
    buttons(0,0,0);
    buttons(98,0,1);
    buttons(196,0,2);
    buttons(0,98,3);
    addText();
}

public void addText() {
//help me guys
button.setText("Please fix me");
}

3 个答案:

答案 0 :(得分:0)

你可以从actionEvent

获得按下按钮
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton)e.getSource();

    }

答案 1 :(得分:0)

Why not just have them in a public arraylist?

"\xF0\x9F\x98\x81" . "your super keyboard"

This way you can loop through them later and change something if you want to,

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;
}

答案 2 :(得分:0)

  

我可以给按钮命名,但不愿意。因为我只会打电话给他们中的一半,然后我认为这不是一个好主意。或者是吗?

你正在为自己创造问题。即使你可能只需要几个/没有它们的电话,但是没有为它们保留参考资料有很大的优势。

如果您有太多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");