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,除了一个的主要内容,如果未能解决你的问题,请参考以下文章

已知一组数据,用JAVA JFRAME利用最小二乘法求出该组数据的多项式拟合公式

添加时移除图像的组件

JFrame从自定义按钮拖动不流畅

JFrame JDialog 区别

JFrame 移除组件

GUI编程----- 容器组件