Hallo zusammen,
ich teste grad mal wieder ein bisschen mit Swing rum und versuche, mir ein Raster an Buttons zu erstellen, die alle dieselbe Aktion ausführen sollen. Dazu hab ich eine Methode geschrieben, die diese Buttons erzeugt (noch unaufgeräumt ):
Die Buttons an sich funktionieren zwar, allerdings hab ich zwei Probleme:
1. Die Buttons werden direkt auf das Frame geschrieben, welches ein BorderLayout hat. Allerdings muss ich schauen, dass sich die Größe der Buttons passend zur Fenstergröße verändert.
2. Der letzte Button unten rechts wird nicht dem Raster entsprechend angezeigt, sondern hinter allen anderen und in der kompletten Fenstergröße, und dieser passt sich auch der Fenstergröße an, wenn ich diese verändere.
Ich hab mit dem BorderLayout noch nicht ganz so viel gearbeitet, daher kann es auch sein, dass ich irgendeinen dummen Fehler drin hab, aber ich komm grad einfach nich drauf^^
Bereits vielen Dank im Voraus für eure Antworten.
ich teste grad mal wieder ein bisschen mit Swing rum und versuche, mir ein Raster an Buttons zu erstellen, die alle dieselbe Aktion ausführen sollen. Dazu hab ich eine Methode geschrieben, die diese Buttons erzeugt (noch unaufgeräumt ):
Java:
package gui;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JToggleButton;
public class Field {
private JFrame frame;
private JToggleButton[][] buttons;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Field window = new Field(15,10);
window.frame.setSize(500,500);
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Field(int pWidth, int pHeigth)
{
initialize();
buttons = new JToggleButton[pWidth][pHeigth];
buildButtons(pWidth, pHeigth);
}
/**
* Initialize the contents of the frame.
*/
private void initialize()
{
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buildButtons(int pWidth, int pHeigth)
{
Dimension d = new Dimension(frame.getSize().width/pWidth, frame.getSize().height/pHeigth);
for(int i=0;i<pHeigth;i++)
{
final int vertical = i;
for(int j=0;j<pWidth;j++)
{
final int horizontal = j;
Point p = new Point((int)d.getWidth()*j,(int)d.getHeight()*i);
buttons[horizontal][vertical] = new JToggleButton();
buttons[horizontal][vertical].setSize(d);
buttons[horizontal][vertical].setLocation(p);
buttons[horizontal][vertical].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
buttons[horizontal][vertical].setText("P");
buttons[horizontal][vertical].setEnabled(false);
}
});
frame.getContentPane().add(buttons[horizontal][vertical]);
}
}
}
}
Die Buttons an sich funktionieren zwar, allerdings hab ich zwei Probleme:
1. Die Buttons werden direkt auf das Frame geschrieben, welches ein BorderLayout hat. Allerdings muss ich schauen, dass sich die Größe der Buttons passend zur Fenstergröße verändert.
2. Der letzte Button unten rechts wird nicht dem Raster entsprechend angezeigt, sondern hinter allen anderen und in der kompletten Fenstergröße, und dieser passt sich auch der Fenstergröße an, wenn ich diese verändere.
Ich hab mit dem BorderLayout noch nicht ganz so viel gearbeitet, daher kann es auch sein, dass ich irgendeinen dummen Fehler drin hab, aber ich komm grad einfach nich drauf^^
Bereits vielen Dank im Voraus für eure Antworten.