2013-09-04 2 views
0

Здравствуйте, я это настроитьСоздание JButtons динамически

private JButton btnFoo, btnBar; 

И мне нужно, чтобы получить для каждой кнопки следующие

 btnFoo = new JButton("Foo"); 
    btnFoo.addActionListener(this); 
    add(btnFoo); 

Возможно ли в Java, чтобы создать это динамически для каждой кнопки я объявляю ? потому что, когда у меня есть 5 кнопок, я не хочу 3x5 = 15 строк кода, но только несколько строк с динамически создаваемыми кнопками.

ответ

5

Написать небольшой цикл и хранить кнопки в массиве:

private JButton buttons[] = new JButton[5]; 

String names[] = {"Foo", "Bar", "Baz", "Fob", "Bao"}; 
for (int i = 0; i < buttons.length; ++i) 
{ 
    JButton btn = new JButton(names[i]); 
    btn.addActionListener(this); 
    add(btn); 
    buttons[i] = btn; 
} 
+0

что именно делает кнопки [I] = BTN; делать? –

+1

@Thorvason: он хранит указатель на вновь созданный объект JButton в массиве указателей 'JButton', называемых' buttons' (который создается в первой строке). –

+0

спасибо, bc Я в настоящее время использую это в своем проекте, где создаю Jbuttons на основе входного XML-файла, и это было одним из главных моментов в этом –

2

Это то, где массивы и петли приходят на помощь. Используйте массив кнопок и перебирайте его. Но если вы беспокоитесь об идентификаторах, то использование HashMap<String, JButton> может быть хорошим способом.

Map<String, JButton> buttons = new HashMap<String, JButton>(); 
map.put("fooButton", new JButton()); 
... 

Повторяя по множеству входа (всего несколько строк кода), установите ActionListener для кнопок.

1
 boton1= new JButton(); 
     boton1.setText(" Calcular "); 
     add(boton1); 
     boton1.setActionCommand("Calcular"); 
     boton1.addActionListener(this); 
     boton1.setEnabled(true); 

     String nB2="boton"; 


     for(int j=2; j<4; j++){ 
      JButton botonGenerico = new JButton(nB2+j); 
      botonGenerico.setText("Calcular"+j); 
      add(botonGenerico); 
      botonGenerico.setActionCommand("Calcular"+j); 
      botonGenerico.addActionListener(this); 
      botonGenerico.setEnabled(true); 


     } 

public void actionPerformed(ActionEvent e){ 
    String a = e.getActionCommand(); 

    if(a.equals("Calcular")){ 
     JOptionPane.showMessageDialog(null, "¡boton 1"); 

     } 
    if(a.equals("Calcular2")){ 
     JOptionPane.showMessageDialog(null, "¡boton 2"); 

     } 
    if(a.equals("Calcular3")){ 
     JOptionPane.showMessageDialog(null, "¡boton 3"); 

     } 

} 
Смежные вопросы