我创建了500,500大小的小框架,在我的框架中我还添加了面板,我已经动态添加了标签和文本框,我在面板中添加了10个标签正确,但是我将再增加5个标签和文本框延续上面添加的标签是指5个标签和文本框的都躲起来,所以如何我EXTENDS画面的高度后,自动如何在java swing中自动扩展框架的高度
回答
有没有布尔您可以设置为true以使框架自动增长。
每次添加内容时,您可能都希望在内容面板上执行getPreferredSize()
,并执行frame.setSize(...)
以适应新组件。
这里有一个演示
public class FrameTestBase {
public static void main(String args[]) {
final JFrame t = new JFrame();
t.getContentPane().setLayout(new GridLayout(-1, 1));
t.add(new JButton(new AbstractAction("Add label") {
@Override
public void actionPerformed(ActionEvent arg0) {
t.getContentPane().add(new JLabel("hello"));
// Auto-adjust height.
Dimension dim = t.getContentPane().getPreferredSize();
dim.width = 500;
t.setSize(dim);
}
}));
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.setSize(500, 500);
t.setVisible(true);
}
}
谢谢你的回应。 – 2012-08-06 09:31:46
调用.pack()
方法应该做的伎俩:
公共无效包()
原因调整此窗口,以适应首选大小和布局 其子组件。如果任一维的最小尺寸小于前面调用setMinimumSize 方法所指定的最小尺寸,则窗口的最终宽度和高度为 。如果窗口和/或其所有者尚不可显示,则在计算首选大小之前,它们都可以显示。 窗口在计算大小后进行验证。
有几个重要的rulles和所需知识的LayoutManager如何混凝土工程与最小值,最大值和PREFERREDSIZE从孩子的来到
我强烈建议添加
(re)validate()
和repaint()
对于已经可见Container
JScrollPane
使用作为第一JComponent
加到JFrame
/JDialog
/JWindow
并用至determin E对于JFrame
最大尺寸(最可能是从显示分辨率),请不要在超过最大大小的情况下使用pack()
,否则容器边界可能被淘汰的屏幕
代码示例中,必须添加规则在第二点。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
public class AddComponentsAtRuntime {
private JFrame f;
private Container panel;
private JCheckBox checkValidate, checkReValidate, checkRepaint, checkPack;
public AddComponentsAtRuntime() {
JButton b = new JButton();
b.setBackground(Color.red);
b.setBorder(new LineBorder(Color.black, 2));
b.setPreferredSize(new Dimension(600, 10));
panel = new Container();
panel.setLayout(new GridLayout(0, 1));
panel.add(b);
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(panel, "Center");
f.add(getCheckBoxPanel(), "South");
f.setLocation(200, 200);
f.pack();
f.setVisible(true);
}
private JPanel getCheckBoxPanel() {
checkValidate = new JCheckBox("validate");
checkValidate.setSelected(false);
checkReValidate = new JCheckBox("revalidate");
checkReValidate.setSelected(false);
checkRepaint = new JCheckBox("repaint");
checkRepaint.setSelected(false);
checkPack = new JCheckBox("pack");
checkPack.setSelected(false);
JButton addComp = new JButton("Add New One");
addComp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton b = new JButton();
b.setBackground(Color.red);
b.setBorder(new LineBorder(Color.black, 2));
b.setPreferredSize(new Dimension(600, 10));
panel.add(b);
makeChange();
System.out.println(" Components Count after Adds :" + panel.getComponentCount());
}
});
JButton removeComp = new JButton("Remove One");
removeComp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int count = panel.getComponentCount();
if (count > 0) {
panel.remove(0);
}
makeChange();
System.out.println(" Components Count after Removes :" + panel.getComponentCount());
}
});
JPanel panel2 = new JPanel();
panel2.add(checkValidate);
panel2.add(checkReValidate);
panel2.add(checkRepaint);
panel2.add(checkPack);
panel2.add(addComp);
panel2.add(removeComp);
return panel2;
}
private void makeChange() {
if (checkValidate.isSelected()) {
panel.validate();
}
if (checkReValidate.isSelected()) {
panel.revalidate();
}
if (checkRepaint.isSelected()) {
panel.repaint();
}
if (checkPack.isSelected()) {
f.pack();
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
AddComponentsAtRuntime makingChanges = new AddComponentsAtRuntime();
}
});
}
}
这需要我要感谢您korbel – 2012-08-06 09:32:19
- 1. java swing无法扩展JFrame的高度?
- 2. 如何在Chrome扩展中控制框架高度和宽度?
- 3. 高级Java swing gui框架
- 4. Java Swing:扩展TreeNode
- 5. Java Swing可滚动框架
- 6. 扩展Spring框架(Java)Servlet
- 7. 如何动态扩展div高度?
- 8. 如何动态扩展UITableViewCell高度?
- 9. 的Java Swing JTree的扩展
- 10. 如何扩展Eclipse框架?
- 11. 如何在wpf中使用XAML来扩展列表框高度?
- 12. 高度可扩展的Java Web应用程序的最佳UI框架
- 13. 如何在播放框架模型中导入Java扩展?
- 14. 扩展Linenarlayout高度
- 15. 可扩展,低开销,高性能的Java持久性框架
- 16. 自动扩展李的高度并调整内容居中
- 17. 如何在数据增加时自动扩展宽度和高度
- 18. 自动展开DIV高度
- 19. 实体框架可扩展的框架
- 20. Java Swing的BDD框架?
- 21. 如何在Java Swing中设置JLabel中的行间距/高度?
- 22. 文本框自动扩展
- 23. 如何给100%高度的iframe是在框架的框架
- 24. CSS框架/展示与动态的Div的安排和高度
- 25. 在PHP yii框架中的C++扩展
- 26. Java Swing:在BorderLayout上更改边框宽度/高度
- 27. 如何自定义扩展的内容的高度手风琴
- 28. 如何根据另一个高度来扩展DataGrid的高度?
- 29. CardView的可扩展高度
- 30. Tcl/Tk:如何自动扩展框架来填充网格中的一行
考虑将标签在面板处于'JScrollPane'代替,如在[这个例子]的标记看出(http://stackoverflow.com/a/5630271/418556)。 – 2012-08-06 07:01:29