0

所以我正在尝试制作一个利用 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();
    } 
}
4

1 回答 1

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 方法中,您需要使用此构造函数创建一个登录框架和一个外框实例:

public static void main(String[] args)
{
    Login log = new Login();
    OuterFrame frame = new OuterFrame(log.login);
}
于 2013-06-25T06:29:11.897 回答