JFrame - 组件忽略 Y 和 X,除了一个
Posted
技术标签:
【中文标题】JFrame - 组件忽略 Y 和 X,除了一个【英文标题】:JFrame - components ignore Y and X, except for one 【发布时间】:2014-09-02 08:07:05 【问题描述】:所以,我有这个 JFrame 代码,看起来一切顺利,没有错误,但是所有组件(除了一个组件)都忽略了 Y 轴和 X 轴。为什么会这样?我什至尝试插入一些极其荒谬的Y轴,例如456789甚至-80,它保持不变。为什么?
我的代码:
frame.setSize(750,200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.setContentPane(panel);
textField.setBounds(0,0,40,200);
textField.setVisible(true);
panel.add(textField);
button.setBounds(200, 0, 40, 200);
button.setVisible(true);
panel.add(button);
bInfo.setBounds(0,80,40,400);
bInfo.setVisible(false);
panel.add(bInfo);
label.setBounds(0,40,40,160);
label.setVisible(false);
panel.add(label);
registerButton();
registerMoreInfoButton();
frame.setVisible(true);
提前致谢! :)
【问题讨论】:
1) 为了尽快获得更好的帮助,请发帖 MCVE。 2) Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。为强大的 GUI 组织组件,而不是 use layout managers 或 combinations of them,以及 white space 的布局填充和边框。 【参考方案1】:JPanel 默认使用 FlowLayout。调用 setBounds() 和使用 LayoutManager 是互斥的。您要么使用 LayoutManager(覆盖您所做的任何 setBounds())或您不使用 LayoutManager (setLayout(null)) 和 setBounds()。
首选方法是使用 LayoutManager。在这里了解如何http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
【讨论】:
以上是关于JFrame - 组件忽略 Y 和 X,除了一个的主要内容,如果未能解决你的问题,请参考以下文章