通常setBounds()方法将被调用对象定位在指定的位置和指定的size..right?我创建了一个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();
}
}
Run Code Online (Sandbox Code Playgroud)
除了代码的一些可疑部分 - 比如缺少大括号,空指针和此类错误 - 您的代码在(800,800)处创建组件,而界面的大小仅为500x500像素.这将使组件脱离视野.将组件放置在距窗口原点较小的偏移处,它们将显示.(我对此进行了测试,并对您的代码进行了一些修改,例如调用的顺序setLayout(null).此调用似乎应该在正确的时间发生,否则组件不会显示给我.)
| 归档时间: |
|
| 查看次数: |
9571 次 |
| 最近记录: |