应对Netbeans生成的GridBagLayout,修改生成的代码以获得我无法获得的';Don’别逼我

应对Netbeans生成的GridBagLayout,修改生成的代码以获得我无法获得的';Don’别逼我,netbeans,gridbaglayout,Netbeans,Gridbaglayout,我没有问题,只是分享了三天的挫折和最终的成功 以上是我使用Netbeans的GridBagLayout模式从Netbeans获得的。下面是我想要的 我无法在合理的时间内使用Netbeans得到我想要的,所以我认为我可以剪切、粘贴和修改生成的代码,使表单看起来像我想要的 我是对的,花在得到我想要的东西上的时间非常少,使用了我昨晚晚些时候开始的Netbeans“大纲” 这是我的密码: public class DoThis extends JFrame { ... (variable decl

我没有问题,只是分享了三天的挫折和最终的成功

以上是我使用Netbeans的
GridBagLayout
模式从Netbeans获得的。下面是我想要的

我无法在合理的时间内使用Netbeans得到我想要的,所以我认为我可以剪切、粘贴和修改生成的代码,使表单看起来像我想要的

我是对的,花在得到我想要的东西上的时间非常少,使用了我昨晚晚些时候开始的Netbeans“大纲”

这是我的密码:

public class DoThis extends JFrame {

... (variable declarations removed)

  public DoThis() {
    initComponents();
  }

  private void initComponents() {

    GridBagConstraints gridBagConstraints;
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new GridBagLayout());

    pnlFileStuff        = new JPanel();
    pnlFileStuff.setBorder(BorderFactory.createEtchedBorder());
    pnlFileStuff.setLayout(new GridBagLayout());

    lblRootNode         = new JLabel("Root node:");
    gridBagConstraints  = new GridBagConstraints();
    pnlFileStuff.add(lblRootNode, gridBagConstraints);

    txtRootNode         = new JTextField("C:\\Users");
    gridBagConstraints  = new GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.ipadx = 520;  // One key
    gridBagConstraints.anchor = GridBagConstraints.WEST;
    pnlFileStuff.add(txtRootNode, gridBagConstraints);

    btnBrowse           = new JButton("Browse...");
    gridBagConstraints  = new GridBagConstraints();
    pnlFileStuff.add(btnBrowse, gridBagConstraints);

    lblFilenamePattern  = new JLabel("Filename pattern:");
    gridBagConstraints  = new GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    pnlFileStuff.add(lblFilenamePattern, gridBagConstraints);

    txtFilenamePattern  = new JTextField("*.*");
    gridBagConstraints  = new GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.ipadx = 250;  // the other key
    gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
    gridBagConstraints.anchor = GridBagConstraints.WEST;
    pnlFileStuff.add(txtFilenamePattern, gridBagConstraints);

    getContentPane().add(pnlFileStuff, new GridBagConstraints());

    pack();
  }

  public static void main(String args[]) {
    invokeLater(new Runnable() {
      public void run() {
        new DoThis().setVisible(true);
      }
    });
  }              
}
事实证明,我只需要在Netbeans中做一件额外的事情——代码中标记为“key”的
ipadx
实例中只有一个。承认有点尴尬。我也不必这么做

不管是好是坏,我决定与大家分享这段学习经历。我想一些新手可能会从这篇文章中获益

“经验教训”:

(1) 在“GridBagLayout模式”中使用Netbeans非常困难。这离所见即所得和直觉都太远了。(这是一个从未使用过GridBayLayout的人写的,几天前才读过。)正如我所关注的S.O.的一个链接所说,“不幸的是,GridBayLayout使用起来非常笨拙,而且容易出错。”这里没有任何争论

(2) 花足够多的时间与Netbeans抗争是值得的,因为没有它,几乎不可能阅读教科书和教程并获得任何接近预期结果的东西(YMMV)

(3) Netbeans在“GridBagLayout模式”下生成的代码比通常难以理解的数百行krazy kode代码(它在“自由设计”模式下生成)更接近于人类编写的代码,这几乎是不可能遵循的,更不用说剪切、粘贴和编辑了(尽管我在这方面取得的成功微乎其微)。(再也不会了。)

(4) 生成的GridBagLayout代码相当容易剪切、粘贴和编辑,以生成所需的结果(考虑到它一开始就在大致范围内,忽略了对其怪癖的大量失望)


最重要的是(对我来说),我终于摆脱了Netbeans的束缚,可能正在从零开始发展一些编写GUI代码的技能,这是我几个月来一直避免的事情,就像瘟疫一样

如果我不重温这篇文章,并声明学习如何在没有Netbeans GUI builder的情况下使用GridBagLayout是任何人都可以做到的,那我就太失职了。在不到一周的学习和从SO那里获得帮助和建议的过程中,我终于实现了创建一个易于编辑和扩展的GUI(与Netbeans生成的GUI不同)——因为我是手工编写代码的。几个月来,我一直在使用和调试的GUI(例如,如何在执行过程中保持显示不闪烁,从而导致SwingWorker和其他复杂问题)已被以下GUI所取代,我在一个晚上创建了该GUI,并在第二天(今天)对其进行了“完善”:

我不是在吹牛;远非如此。我几乎不知道蹲。就像“完美”的意思是“得到了输出,它不闪烁,它可读,但它像罪恶一样丑陋。”


我希望只是给其他新手带来希望。

。它提供了很好的建议等,其中包括“放弃希望,所有使用GridBagLayout的人都放弃希望”,但它建议了应对技巧。两个正确的文本字段没有正确的边距与其余组件对齐,booooo。。。jk,
rep+=10