窗口生成器和 Swing 中的设计时间异常

发布于 2024-12-03 23:56:08 字数 676 浏览 2 评论 0原文

我正在尝试使用 Eclipse 和 Swing 的窗口生成器。

我使用自定义 JPanel 创建了一个演示计算器项目

DigitBoardView extends JPanel  

,并使用 for 循环分配了键

String[] digits = {"1", ...} 
for(String digit : digits){
 JButton digButton = new JButton(digit);
 add(digButton);
}

第一个问题 - DigitBoardView 设计器没有显示它, 尽管常见问题解答说它不会生成并显示依赖于运行时的 GUI 在设计时(这没关系),这里没有任何东西依赖于运行时。
即使我在编译时使用明确已知的数字来迭代
for(int i = 0; i < 10; i++) 循环设计器没有解决

第二个问题 - JFrame 设计器确实显示了它! 如果我将 JFrame 的内容窗格设置为新的 DigitBoardView 它会在设计时显示...

为什么这么奇怪? 这是错误吗?

我应该通过压平循环来绕过它吗?
是不是非常丑陋?
违背了不重复原则的目的?

Im experimenting with window builder for eclipse and Swing.

I created a demo calculator project with a custom JPanel

DigitBoardView extends JPanel  

and assigned the keys using a for loop

String[] digits = {"1", ...} 
for(String digit : digits){
 JButton digButton = new JButton(digit);
 add(digButton);
}

1st problem - DigitBoardView designer doesn't show it,
though FAQ says it will not generate and show runtime dependant GUI
in design time (which is OK), nothing here is runtime dependant.
Even if I iterate over the digits with an explicitly known at compile time
for(int i = 0; i < 10; i++) loop designer doesn't edge

2nd problem - JFrame designer does show it!
If I set the content pane of a JFrame to be new DigitBoardView
it will be shown in design time...

Why so strange?
Is it bug?

Should I bypass it by flattening the loop?
Isn't it extremely ugly?
Defeats the purpose of not repeating myself principle?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假扮的天使 2024-12-10 23:56:08

虽然这与设计器问题无关,但您可能想检查一下 KeyPadPanel ,它使用 操作按键绑定,用于实现具有简单 网格布局

Although it's tangential to the designer issue, you might like to examine KeyPadPanel, which uses actions and key bindings to implement a simple numeric keypad having a simple GridLayout.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文