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