2010-01-18 61 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