【问题标题】:Java Layout Positioning with NetBeans vs Eclipse使用 NetBeans 与 Eclipse 进行 Java 布局定位
【发布时间】:2012-01-09 21:34:12
【问题描述】:

我正在尝试创建一个简单的幻灯片程序,例如 Powerpoint。为了设计它的 GUI,我使用了 Netbeans,然后将 GUI 代码从 Netbeans 复制到 Eclipse。

Netbeans 生成以下代码:

    pg = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    jPanel1 = new javax.swing.JPanel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setBackground(new java.awt.Color(153, 153, 153));

    pg.setBackground(new java.awt.Color(255, 255, 255));
    pg.setForeground(new java.awt.Color(255, 255, 255));
    pg.setPreferredSize(new java.awt.Dimension(255, 234));

    javax.swing.GroupLayout pgLayout = new javax.swing.GroupLayout(pg);
    pg.setLayout(pgLayout);
    pgLayout.setHorizontalGroup(
        pgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 357, Short.MAX_VALUE)
    );
    pgLayout.setVerticalGroup(
        pgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 257, Short.MAX_VALUE)
    );

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 62, Short.MAX_VALUE)
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 279, Short.MAX_VALUE)
    );


    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(pg, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(pg, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
            .addContainerGap())
    );

    pack();

我的问题是,我想将右侧的jPanel1 更改为我自己的扩展JPanel 的类。为此,我写道:

JPanel jPanel1 = new JPanel();  
jPanel1.add(new ToolBoxGUI("ToolBox"));

但是当我运行代码时,右侧没有ToolBoxGUI 类按钮。我该如何解决这个问题?

【问题讨论】:

  • 一种方法是将 bean 添加到您的 Netbeans GUI。我现在没有该程序,但我认为在 GUI 创建者的右侧,有一个工具箱。其中一个选项是添加一个 bean。单击“Create Bean”并输入“ToolBoxGUI”作为类名。然后你可以把它拖到你的面板上。
  • 从长远来看,手工设计 UI 会更好。 Visual Guide to Layout Managers 将帮助您了解差异,但总的来说,我发现 BoxLayout(和 Box 类)、BorderLayoutFlowLayout 是最有用的。我从未使用过MiG layout manager,但我知道有些人真的很喜欢它。并坚持使用 NetBeans...从长远来看,您会更快乐 :)

标签: java swing layout positioning


【解决方案1】:

jPanel1 使用 GroupLayout。要使其可见,您的 ToolBoxGUI 必须添加到此 GroupLayout。如果你想让 ToolBoxGUI 成为 jPanel1 的唯一组件,那么删除设置 jPanel1 布局的代码:

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGap(0, 62, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGap(0, 279, Short.MAX_VALUE)
);

替换成

jPanel1.setLayout(new BorderLayout());

或者,如果你想用 ToolBoxGUI 替换 jPanel1,删除与上面相同的代码,并将 jPanel1 初始化为

jPanel1 = new ToolBoxGUI();

【讨论】:

    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多