Hallo liebe Community,
für ein Projekt baue ich mir gerade eine GUI auf. Genauer gesagt habe ich ein JFrame, in dem sich zwei Panels befinden, in denen sich wiederum jeweils Buttons befinden.
Ich habe die insgesamt 110 Buttons in einem Panel mithilfe des GridLayouts zu einer schönen Tabelle angeordnet. Nun möchte ich aber bei einem einzelnen Button das Bildchen verändern, und zwar mit setIcon.
Meine bisherigen Versuche (ich bin Anfänger) sind fehlgeschalgen. Ich habe schlicht versucht, den Button zu verändern und ihn dann erneut mit panel.add() zu aktualisieren. Auf den ersten Blick war das zwar erfolgreich, minimiert man jedoch den Frame und ruft ihn erneut auf, erscheint der Button zusaätzlich am unteren Rand. Hier zur Verdeutlichung der QT:
Die betroffene Methode ist changeIcon();
Vielen Dank im Voraus,
Ardam
für ein Projekt baue ich mir gerade eine GUI auf. Genauer gesagt habe ich ein JFrame, in dem sich zwei Panels befinden, in denen sich wiederum jeweils Buttons befinden.
Ich habe die insgesamt 110 Buttons in einem Panel mithilfe des GridLayouts zu einer schönen Tabelle angeordnet. Nun möchte ich aber bei einem einzelnen Button das Bildchen verändern, und zwar mit setIcon.
Meine bisherigen Versuche (ich bin Anfänger) sind fehlgeschalgen. Ich habe schlicht versucht, den Button zu verändern und ihn dann erneut mit panel.add() zu aktualisieren. Auf den ersten Blick war das zwar erfolgreich, minimiert man jedoch den Frame und ruft ihn erneut auf, erscheint der Button zusaätzlich am unteren Rand. Hier zur Verdeutlichung der QT:
Die betroffene Methode ist changeIcon();
Java:
public User_Interface ()
{
frame.setBounds(0, 0, 1020, 480);
frame.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 0));
mypanel = User_Interface.setPanel(mypanel, Barray, false);
mypanel.setPreferredSize(dim);
cpupanel = User_Interface.setPanel(cpupanel, Barray, true);
cpupanel.setPreferredSize(dim);
frame.add(mypanel);
frame.add(cpupanel);
frame.setVisible(true);
}
public static JPanel setPanel (JPanel panel, JButton[][] Barray, boolean cpu)
{
if (cpu==false)
panel.setBounds(0, 0, 440, 440);
else
panel.setBounds(580, 0, 440, 440);
Barray = User_Interface.initButtons(Barray,false);
Barray = User_Interface.initButtons(Barray, true);
for (int i=0; i<=9; i++)
{
for (int j=0; j<=9; j++)
panel.add(Barray[i][j]);
}
panel.setLayout(new GridLayout(11,10,0,0));
return panel;
}
public static JButton[][] initButtons (JButton[][] Barray, boolean cpu)
{
for (int i=0; i<=9; i++)
{
for (int j=0; j<=9; j++)
{
Barray[i][j]= new JButton (User_Interface.loadImage("water"));
if (cpu==false)
Barray[i][j].setBounds(40+40*i,40+40*j,40,40);
else
Barray[i][j].setBounds(580+40*i, 580+40*j,40,40);
}
}
return Barray;
}
public void changeIcon (boolean cpu, String name, int x, int y)
{
Barray[x][y].setIcon(User_Interface.loadImage(name));
mypanel.add(Barray[x][y]);
}
}
Vielen Dank im Voraus,
Ardam