GUI编程和从另一个类中调用类

时间:2013-06-25 06:14:14

标签: java swing class user-interface awt

所以我试图制作一个利用JDesktopPane来保存许多不同内部帧的程序。在下面的代码中,我只有一个内部框架(一个登录框架)。我希望将内部框架传递到外框并像这样添加它们。但我这样做有问题....文件名是TheProgram.java看:

import javax.swing.*;
import java.awt.BorderLayout;

class OuterFrame
{
JDesktopPane outframe = new JDesktopPane();
    OuterFrame()
    {

    }
    OuterFrame(JInternalFrame inframe)
    {
        outframe.add(inframe);
    }

}

class Login extends JFrame
{
    JPanel panel;
    JLabel lblname;
    JLabel lblpassword;
    JTextField txtname;
    JPasswordField txtpassword;
    JButton btlogin; 
    JInternalFrame login = new JInternalFrame();

    Login()
    {
        login.setSize(300,200);
        login.setLocation(10,2);
        login.setTitle("Member Login");
        lblname=new JLabel("User Name:");
        lblpassword=new JLabel("Password:");
        btlogin=new JButton("Login");            
        txtname=new JTextField(20);
        txtpassword=new JPasswordField(20);
        panel=new JPanel();
        panel.add(lblname);
        panel.add(txtname);
        panel.add(lblpassword);
        panel.add(txtpassword);
        panel.add(btlogin);
        //panel.add(lblmess);
        login.add(panel);
        login.setVisible(true);
    }
    public void method()
    {
        OuterFrame.OuterFrame(login);
    }

}

public class TheProgram
{
    public static void main(String[] args)
    { 
        new OuterFrame();
    } 
}

1 个答案:

答案 0 :(得分:1)

您的主要方法是

public static void main(String[] args)
    { 
        new OuterFrame();
    }

构造outerframe,其中包含构造函数

OuterFrame()
    {

    }

......什么都不做

编辑:这可能不是您这样做的最佳方式,正如评论中所建议的那样,登录通常是对话。我已经编写了一些适合您的代码,但在管理方面可能不是最好的锣。

首先,你的OuterFrame的构造函数需要对你传递它的内部框架做一些事情。喜欢这个

OuterFrame(JInternalFrame inframe)
{
    JFrame aFrame = new JFrame();
    outframe.add(inframe);
    outframe.setVisible(true);
    aFrame.setLayout(new BorderLayout());
    aFrame.setSize(400,400);
    aFrame.add(outframe);
    aFrame.setVisible(true);
}

然后在你的main方法中,你需要使用这个构造函数创建一个Login框架和一个外框实例:

public static void main(String[] args)
{
    Login log = new Login();
    OuterFrame frame = new OuterFrame(log.login);
}