2016-12-05 35 views
0

我想提出類似下面的設計,如何在JPanel和JFrame之間放置偏移量?

enter image description here

我試圖把JPanels和JFrame中的offesets,我得到一些與此類似, enter image description here

我有下面的代碼,我在JFrame中輸出2個JPanel。

private static void createAndShowGUI() { 

     JFrame frame = new JFrame("My App"); 

     GridLayout myLayout = new GridLayout(1,2); 
     myLayout.setHgap(10); 

     frame.setLayout(myLayout); 

     JPanel jLeftPanel = new JPanel(); 
     JPanel jRightPanel = new JPanel(); 

     jLeftPanel.setBackground(Color.DARK_GRAY); 
     jLeftPanel.setSize(275, 250); 

     jRightPanel.setBackground(Color.DARK_GRAY); 
     jRightPanel.setSize(275, 250); 

     frame.add(jLeftPanel); 
     frame.add(jRightPanel); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

//  frame.pack(); 
     frame.setSize(600, 550); 
     frame.setVisible(true); 
    } 

如何改進設計?

回答

0

JComponent可以有邊框。有一個BorderFactory可以產生適當的邊界。例如:

int top=10; 
int left=10; 
int bottom=10; 
int right=10; 
jLeftPanel.setBorder(BorderFactory.createEmptyBorder(top,left,bottom,right)); 

這將創建一個空白(即非透明)邊框。你可以有一個邊界與特定的顏色,太:

int thickness=10;  
jLeftPanel.setBorder(BorderFactory.createLineBorder(Color.GRAY,thickness)); 

看看其他的BorderFactory.create ...方法,如果你需要什麼更復雜,你可以創建自己的javax.swing.border.Border接口的實現。

+0

非常感謝您的回答,這有效。如何在左側面板的右下方放置一個按鈕,該按鈕需要2個參數(寬度和高度)並在右側面板中繪製圖形?我最近3個小時在這方面苦苦掙扎,有點幫助表示讚賞。 – Chak

+0

對不起,延遲迴復。我會爲左側面板使用BorderLayout,然後添加兩個內側面板,中間爲輸入文本字段的GridLayout面板,以及南側的FlowLayout面板(FlowLayout可以右對齊)。在右邊,我將繼承JPanel並在重載的JComponent.paintComponent()方法中自己繪製圖形。另外,Oracle有一個[定製繪製組件的教程](https://docs.oracle.com/javase/tutorial/uiswing/painting/)。 –

+0

此外,如果您想創建複雜的佈局,請注意,AWT/Swing的板載佈局管理器非常有限且繁瑣,無法在較大規模上使用。我建議尋找第三方佈局經理,特別是[JGoodies FormLayout](http://www.jgoodies.com/freeware/libraries/forms/)。 –