【问题标题】:Java AWT application window paddingJava AWT 应用程序窗口填充
【发布时间】:2011-01-06 13:00:08
【问题描述】:

我正在尝试用 Java 构建一个简单的 AWT 应用程序。我希望主窗口中的所有容器都按位分隔。我可以通过在 BorderLayout 构造函数中设置 Hgap 和 Vgap 来实现这一点(见下文。)

但是,我不知道如何在容器和主窗口边缘之间放置一个盖子。如何在主窗口中添加几个像素的填充?

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);
    }
}

【问题讨论】:

    标签: java layout window awt


    【解决方案1】:

    我同意其他答案,并建议使用 Swing(改用 JApplet),这将使各种事情变得更容易(例如,您可以调用 setBorder 并使用 BorderFactory 创建边框),但在您的情况下您可以通过覆盖 getInsets 来设置插图:

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

    用你喜欢的任何东西替换 10。

    似乎没有设置器,或者我会说使用它来代替。如果在 AWT 小程序的情况下有更好的方法来做到这一点,请有人纠正我。

    如果您决定使用 Swing,请参阅:How to Use Borders

    【讨论】:

    • 谢谢!该修复效果很好。不过,由于各种建议,我想我最终可能会选择 Swing。
    • +1 像 CSS 一样用作填充。 JPanel test = new JPanel() { public insets getInsets() { return new Insets (10, 10, 10, 10); } };
    【解决方案2】:

    AWT 并不是最新的技术。因此,除非您对在 AWT 中工作有特殊要求,否则我建议您查看现代替代品 SwingSWT - 与 AWT 相比,它们的行为更加舒适、灵活且可定制且可预测。

    开发它们的一个原因正是您在这里尝试进行的那种视觉微调对于 AWT 来说是不必要的困难(如果不是不可能的话)。

    【讨论】:

      【解决方案3】:

      虽然您可以通过设置小程序的insets 而侥幸,但我建议您改用 Swing(扩展 javax.swing.JApplet)。然后将JPanel 设置为具有适当宽度的EmptyBorder 集的内容窗格。

      另请注意,您可能很快就必须升级到更复杂的布局管理器,例如GridBagLayout

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-18
        • 2020-07-09
        • 1970-01-01
        • 1970-01-01
        • 2010-12-06
        • 2012-05-29
        • 2013-07-19
        • 1970-01-01
        相关资源
        最近更新 更多