這之間的差距是我的問題擺脫JPanels
我怎樣才能從內部矩形框擺脫間隙(它實際上是中間JPanel的邊框)?
Outter矩形是一個擴展JCompoment。裏面有三個JPanel
s。他們每個人都使用GridLayout。我甚至嘗試在大矩形中將Hgap設置爲負值,但它不會改變任何內容。
編輯:對不起,問題不清楚。我確實想要邊框,但我不想要內邊框和外邊框之間的縫隙。如果兩者之間沒有差距,則整個矩形將代表一個類圖類。
這之間的差距是我的問題擺脫JPanels
我怎樣才能從內部矩形框擺脫間隙(它實際上是中間JPanel的邊框)?
Outter矩形是一個擴展JCompoment。裏面有三個JPanel
s。他們每個人都使用GridLayout。我甚至嘗試在大矩形中將Hgap設置爲負值,但它不會改變任何內容。
編輯:對不起,問題不清楚。我確實想要邊框,但我不想要內邊框和外邊框之間的縫隙。如果兩者之間沒有差距,則整個矩形將代表一個類圖類。
您可能意味着這樣說:
import java.awt.*;
import javax.swing.*;
public class GridBadFrame {
private JFrame frame;
private JPanel pnlCenter;
private JPanel pnl1;
private JPanel pnl2;
private JPanel pnl3;
public GridBadFrame() {
pnl1 = new JPanel();
pnl1.setBackground(Color.red);
pnl2 = new JPanel();
pnl2.setBackground(Color.blue);
pnl3 = new JPanel();
pnl3.setBackground(Color.red);
JLabel lblWest = new JLabel();
lblWest.setPreferredSize(new Dimension(50, 150));
JLabel lblEast = new JLabel();
lblEast.setPreferredSize(new Dimension(50, 150));
JLabel lblNorth = new JLabel();
lblNorth.setPreferredSize(new Dimension(600, 50));
JLabel lblSouth = new JLabel();
lblSouth.setPreferredSize(new Dimension(600, 50));
pnlCenter = new JPanel();
pnlCenter.setBackground(Color.black);
pnlCenter.setLayout(new java.awt.GridLayout(3, 0, 10, 10));
pnlCenter.setPreferredSize(new Dimension(600, 400));
pnlCenter.add(pnl1);
pnlCenter.add(pnl2);
pnlCenter.add(pnl3);
frame = new JFrame();
frame.add(pnlCenter, BorderLayout.CENTER);
frame.add(lblNorth, BorderLayout.NORTH);
frame.add(lblSouth, BorderLayout.SOUTH);
frame.add(lblWest, BorderLayout.WEST);
frame.add(lblEast, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100, 100);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
GridBadFrame gridBadFrame = new GridBadFrame();
}
});
}
}
我想如果你嘗試setBorderPainted(false)它可能會擺脫不必要的邊框。
不是空間在這個問題上的問題? 雖然您可能選擇不繪製邊框,但組件仍佔用空間,但只有當它空時它纔會顯示出來! – gotomanners
該問題可能與JPanel上由GridLayout設置的首選高度和寬度有關。從
摘錄的documentation:
網格佈局的優選寬度是 任何在容器倍分量的列的數目, 加上水平填充的次數最大首選寬度列加1,再加上目標容器的左右插槽 。
網格佈局的優選高度的任何容器中的時間的行數,行數的 加上垂直填充的次數加一,加上 頂部和底部組件的最大首選高度 目標容器的插頁。
它實際上是中間的JPanel
如果是邊框的邊框,刪除(setBorder(null)
)。
是的!這正是我想要的。哦,我看到你在那裏做了什麼!哈哈,這是相當整潔的把戲。您有意在面板之間留下間隙,以便中央面板的背景將顯示爲分隔線。簡單但是做我想要的工作。歡呼 – bili
很高興爲你服務 – mKorbel