Ich würde versuchen, es durch Hinzufügen von Rahmen zu den Komponenten, wie sie hinzugefügt werden. Der einfache Weg, es zu tun, ist mit nur BorderFactory.createLineBorder()
, wie folgt aus:
JPanel panel = new JPanel(new GridLayout(10,10));
panel.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
for (int i =0; i<(10*10); i++){
final JLabel label = new JLabel("Label");
label.setBorder(BorderFactory.createLineBorder(Color.BLACK));
panel.add(label);
}
jedoch, dass Sie dicker Grenzen zwischen den Zellen geben, als an den Kanten der Platte, weil die äußeren Kanten nur eine ein- haben pixel-dicker Rahmen und die inneren Ränder haben zwei ein Pixel dicke Ränder. Zum Umgehen das, können Sie BorderFactory.createMatteBorder()
verwenden nur ein Pixel breiten Grenzen überall zu zeichnen:
final int borderWidth = 1;
final int rows = 10;
final int cols = 10;
JPanel panel = new JPanel(new GridLayout(rows, cols));
panel.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
final JLabel label = new JLabel("Label");
if (row == 0) {
if (col == 0) {
// Top left corner, draw all sides
label.setBorder(BorderFactory.createLineBorder(Color.BLACK));
}
else {
// Top edge, draw all sides except left edge
label.setBorder(BorderFactory.createMatteBorder(borderWidth,
0,
borderWidth,
borderWidth,
Color.BLACK));
}
}
else {
if (col == 0) {
// Left-hand edge, draw all sides except top
label.setBorder(BorderFactory.createMatteBorder(0,
borderWidth,
borderWidth,
borderWidth,
Color.BLACK));
}
else {
// Neither top edge nor left edge, skip both top and left lines
label.setBorder(BorderFactory.createMatteBorder(0,
0,
borderWidth,
borderWidth,
Color.BLACK));
}
}
panel.add(label);
}
}
Dies sollte Ihnen Grenzen Breite borderWidth
überall, sowohl zwischen den Zellen und entlang den Außenkanten.
Danke dir Joe ... :-) – Jessy
Gern geschehen. Ein gutes Beispiel für eine Frage: Ich konnte Code direkt in Eclipse kopieren und ausführen, was es sehr einfach machte, meine Lösung zu testen. –
versucht, dies zu Pop-up, aber wenn ich es lief der JFrame leer war, nichts – Ungeheuer