Hallo alle zusammen,
ich habe das Problem, meine eigenen Komponenten im GridLayout anzuordnen. Sie werden immer untereinander und mit einem großen Abstand zueinander angeordnet. Ich möchte eine Art Grid erstellen, jedes einzelne soll dann später angeklickt werden. Habe die getPreferredSize Methode überschrieben, damit die Komponente die Größe dem Layoutmanager mitteilt. Aber es funktioniert nicht wie gewünscht. Hat einer vielleicht eine Idee. Vielen Dank im Voraus.
PS. Außerdem scheinen die Komponenten größer zu sein. Auch außerhalb der gezeichneten Quadrate wird eine ID ausgegeben, wenn ich einen MouseListener hinzufüge. Als ober-und unterhalb des jeweiligen Feldes.
ich habe das Problem, meine eigenen Komponenten im GridLayout anzuordnen. Sie werden immer untereinander und mit einem großen Abstand zueinander angeordnet. Ich möchte eine Art Grid erstellen, jedes einzelne soll dann später angeklickt werden. Habe die getPreferredSize Methode überschrieben, damit die Komponente die Größe dem Layoutmanager mitteilt. Aber es funktioniert nicht wie gewünscht. Hat einer vielleicht eine Idee. Vielen Dank im Voraus.
PS. Außerdem scheinen die Komponenten größer zu sein. Auch außerhalb der gezeichneten Quadrate wird eine ID ausgegeben, wenn ich einen MouseListener hinzufüge. Als ober-und unterhalb des jeweiligen Feldes.
Java:
public class Tile extends JComponent{
private Rectangle bounds;
private int id;
public Tile(int id){
bounds = new Rectangle(0,0,50,50);
this.id = id;
addMouseListener(new MouseInput());
}
protected void paintComponent(Graphics g){
final Dimension DIM = getPreferredSize();
g.setColor(Color.black);
g.drawRect(bounds.x, bounds.y, DIM.width, DIM.height);
}
public Dimension getPreferredSize(){
return new Dimension(bounds.width, bounds.height);
}
public Dimension getMinimumSize(){
return getPreferredSize();
}
private class MouseInput extends MouseAdapter{
public void mousePressed(MouseEvent e){
System.out.println(id);
}
}
}
}
Java:
public class View extends JFrame {
public View(){
super("Grid");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
JPanel content = new JPanel(new GridLayout(2,2));
for(int i=0; i<20; ++i){
content.add(new Tile(i));
}
add(content);
setVisible(true);
}
Zuletzt bearbeitet: