gpt4 book ai didi

java - 为什么即使将 setLayout() 设置为 null 后,setBounds() 方法也不起作用?

转载 作者:行者123 更新时间:2023-12-02 11:07:25 24 4
gpt4 key购买 nike

通常 setBounds() 方法将被调用的对象定位在指定的位置和指定的大小..对吗?我创建了一个 JFrame 类,并通过设置 setLayout(null) 演示了它在按钮上的工作原理。然后我创建了一个扩展 JPanel 的类并在其中放置了一些组件。这些组件的边界是在方法内部设置的。此类的对象包含在扩展 JFrame 的类中。然后这个对象调用setBound()方法。但结果没有显示JPanel扩展类中的组件。下面给出了 cde 片段。

class Administrator extends JFrame implements ActionListener
{
public Administrator()
{
setTitle("Administration");
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
JButton newbutton=new JButton(" New.. ");
newbutton.addActionListener(this);
add(newbutton);
newbutton.setBounds(100,100,100,25);
setVisible(true);

public static void main(String arg[])
{
new Administrator();
}

public void actionPerformed(ActionEvent ae)
{
String act=(String)ae.getActionCommand();
if(act.equals("New Registry..")||act.equals(" New.. "))
{
regPanel rgpnl=new regPanel();

Dimension sz;
sz=rgpnl.getPreferredSize();
rgpnl.setBounds(800,800,sz.width,sz.height);
rgpnl.arrangeComponents();
add(rgpnl);


repaint();
setVisible(true);
}
}
class regPanel extends JPanel
{
Label namelab;
JTextField name;
JButton do_register;
public regPanel()
{
//Container = get ();
setLayout(null);

namelab=new Label("Name :");
name=new JTextField(20);
add(namelab);
add(name);
add(do_register);
}
public void arrangeComponents()
{
Dimension size;

size=namelab.getPreferredSize();
namelab.setBounds(20,10,size.width,size.height);
name.getPreferredSize();
name.setBounds(150,10,size.width,size.height);
do_register.setBounds(10,10,size.width,size.height);

repaint();

}
}

最佳答案

除了代码中一些有问题的部分(例如缺少大括号、空指针和此类错误)之外,您的代码在 (800,800) 处创建组件,而界面大小仅为 500x500 像素。这将使组件看不见。将组件放置在距窗口原点较小的偏移处,它们就会显示。 (我对此进行了测试,并对代码进行了一些修改,例如对 setLayout(null) 进行调用的顺序。此调用似乎应该在正确的时间发生,否则组件将不会不显示给我。)

关于java - 为什么即使将 setLayout() 设置为 null 后,setBounds() 方法也不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4491166/

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