2010-01-18 94 views
2

我正嘗試在Java中構建一個簡單的AWT應用程序。我希望主窗口中的所有容器都是分開的。我可以通過在BorderLayout構造函數中設置Hgap和Vgap來實現此目的(參見下文)。Java AWT應用程序窗口填充

但是,我無法弄清楚如何在容器和主窗口的邊緣之間放置一個帽。如何在主窗口中添加幾個填充像素?

import java.awt.*; 
import java.applet.Applet; 

public class LayoutTest extends Applet { 

    public void init() { 

     BorderLayout layout = new BorderLayout(8, 8); 

     setLayout(layout); 

     add(new Button("Left"), BorderLayout.CENTER); 
     add(new Button("Right"), BorderLayout.EAST); 
    } 
} 

回答

4

我同意其他答案,並建議使用Swing(使用JApplet代替),這將使各種事情更容易(例如,您可以調用setBorder並使用BorderFactory創建邊框),但是在您的如果您可以通過覆蓋getInsets來設置插入:

@Override 
    public Insets getInsets() 
    { 
     return new Insets(10,10,10,10); 
    } 

用任何你喜歡的東西代替10。

似乎沒有成爲一個二傳手,或者我會說使用該代替。如果在AWT Applet的情況下有更好的方法來做到這一點,有人請糾正我。

如果您決定使用Swing,請參閱:How to Use Borders

+0

Thanks!該修補程序效果很好。由於各種建議,我認爲我可能最終會選擇Swing。 – Tom 2010-01-18 22:56:31

+0

+1像CSS一樣工作得很好。 'JPanel test = new JPanel(){public insets getInsets(){return new Insets(10,10,10,10); }};' – YumYumYum 2012-07-19 12:15:27

1

AWT不是該塊上的最新技術。因此,除非您有特定要求在AWT中完成工作,否則我會建議您查看現代替代品SwingSWT--它們的行爲比AWT更舒適,靈活,可定製和可預測。後面發展他們

的一個原因是正是那種視覺微調你想在這裏做的是與AWT不必要的困難(如果不是不可能的)。

0

雖然你可能會逃脫設置小程序的insets,我建議移動到Swing(擴展javax.swing.JApplet)。然後將一個JPanel設置爲內容窗格,並將EmptyBorder設置爲適當的寬度。

另外請注意,你可能很快有向上移動到一個更復雜的佈局管理器,如GridBagLayout