我用一个方法创建了一些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");
}
答案 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");