gpt4 book ai didi

java - 尝试添加JLabel,但它卡在Jframe中间

转载 作者:行者123 更新时间:2023-12-01 13:56:31 24 4
gpt4 key购买 nike

我正在尝试添加一个 JLabel,但问题是它卡在 jframe 的中间或左侧。

这是我的代码;

public class test extends JFrame{

public test(){
JLabel text = new JLabel("test")
text.setLocation(100,100);
setTitle("Help me");
setSize(500,500);
add(text);

}
}

public class Runner{
public static void main (String[] args){
test a = new test();
}
}

最佳答案

每个容器都有一个布局管理器,它根据自己的规则设置其包含的元素的位置和大小。 JFrame 默认布局是 BorderLayout,它默认将内容放在左侧。

要绝对定位组件,您必须将布局管理器设置为 null 并在每次调用 JFrame 时显式调用 repaint()添加/删除/修改您的组件。您还必须设置组件的大小,而不仅仅是它们的位置(例如使用 setBounds 在一次调用中设置它们。

例如,以下代码可以实现您想要的功能:

public class Test extends JFrame {
public Test() {

// remove any layout manager.
setLayout(null);

setTitle("Help me");
setSize(500, 500);

JLabel text = new JLabel("test");
// set size and position of component.
text.setBounds(new Rectangle(100, 100, 200, 200));
// add component.
add(text);

// explicitely call repaint().
repaint();

}


public static void main(String[] args) {
new Test().setVisible(true);
}
}

更多信息,您可以查看Oracle tutorial on working without a layout manager .

编辑:我仍然建议您使用普通的布局管理器来实现您想要的效果,因为绝对定位所有内容通常很痛苦。

关于java - 尝试添加JLabel,但它卡在Jframe中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com