我想再次进入java(已经有几年了).我从来没有真正在java中进行任何GUI编码.我一直在使用Netbeans来开始这个.
在工作中使用C#中的winforms时,我使用usercontrols来构建UI的一部分并动态地将它们添加到表单中.
我一直在尝试JPanels
在C#中使用类似用户控件.我创建了一个JPanel
名为的表单BlurbEditor
.这有一些简单的控制.我试图在运行时将其添加到另一个面板上的按钮事件.
这是我认为可行的代码:
mainPanel.add(new BlurbEditor()); mainPanel.revalidate(); //I've also tried all possible combinations of these too //mainPanel.repaint(); //mainPanel.validate();
遗憾的是,这不起作用.我究竟做错了什么?
我想到了.在这里接受的答案下的评论解释了它: 动态添加JTable不显示
基本上我刚刚在mainPanel.add()之前添加了以下内容
mainPanel.setLayout(new java.awt.BorderLayout());
Swing/AWT
在向它们添加内容之前,组件通常必须具有布局 - 否则UI
将无法知道子组件的放置位置.
BFreeman建议BorderLayout
哪个是最容易使用的,并且允许您将事物"粘合"到父母的顶部,底部,左侧,右侧或中心.
还有其他FlowLayout
类似的东西textarea
- 它在父级的顶部从左到右添加组件,并在到达结尾时包装到新的行.
在GridBagLayout
这一直是臭名昭著的是无法弄清楚,但不会给你几乎所有你需要的控制.有点像HTML
我们过去看到的那些表格,包括rowpan,colspan,width和height属性的奇怪组合 - 这看起来似乎并不像你想要的那样.