Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GUI编程和从另一个类中调用一个类_Java_Swing_Class_User Interface_Awt - Fatal编程技术网

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

Java GUI编程和从另一个类中调用一个类,java,swing,class,user-interface,awt,Java,Swing,Class,User Interface,Awt,所以我试图制作一个程序,利用JDesktopPane来保存许多不同的内部帧。在下面的代码中,我只有一个内部框架(登录框架)。我希望将内部框架传递到外部框架,然后像这样添加它们。但我在做这件事时遇到了问题。。。。文件名为program.java Look: import javax.swing.*; import java.awt.BorderLayout; class OuterFrame { JDesktopPane outframe = new JDesktopPane(); Ou

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

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();
    } 
}

你的主要方法是

public static void main(String[] args)
    { 
        new 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);
}
然后,在主方法中,您需要使用以下构造函数创建登录框架和outerframe的实例:

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

所以,就我所知,你的程序没有…什么…我也不能真正告诉你你想要实现什么…我能告诉你的是,
JFrame
JInternalFrame
不兼容通常,JDialog用于登录信息。