Tôi sẽ cố gắng làm điều đó bằng cách thêm đường viền cho các thành phần khi chúng được thêm vào. Cách đơn giản để làm điều đó chỉ được sử dụng BorderFactory.createLineBorder()
, như thế này:
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);
}
Tuy nhiên, đó sẽ cung cấp cho bạn giáp dày hơn giữa các tế bào hơn ở các cạnh của bảng điều khiển, bởi vì các cạnh bên ngoài sẽ chỉ có một one- đường viền dày của pixel và các cạnh bên trong sẽ có hai đường viền dày một pixel với nhau. Để làm việc xung quanh đó, bạn có thể sử dụng BorderFactory.createMatteBorder()
để chỉ vẽ đường biên giới một pixel rộng ở khắp mọi nơi:
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);
}
}
này sẽ cho bạn biên giới rộng borderWidth
ở khắp mọi nơi, cả giữa các tế bào và dọc theo các cạnh bên ngoài.
Cảm ơn bạn Joe ... :-) – Jessy
Bạn được chào đón. Ví dụ tốt về một câu hỏi, bằng cách này - tôi đã có thể cắt và dán mã của bạn trực tiếp vào Eclipse và chạy nó, điều này làm cho nó rất dễ dàng để kiểm tra giải pháp của tôi. –
đã cố gắng để có được điều này để bật lên, nhưng khi tôi chạy nó JFrame đã được sản phẩm nào, không có gì có – Ungeheuer