小编Vin*_*nod的帖子

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

通常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 :"); …
Run Code Online (Sandbox Code Playgroud)

java swing

2
推荐指数
1
解决办法
9571
查看次数

标签 统计

java ×1

swing ×1