Java 如何打开不同包中的JFrame,而另一个JFrame位于同一项目中的其他不同包中

Java 如何打开不同包中的JFrame,而另一个JFrame位于同一项目中的其他不同包中,java,swing,package,jframe,Java,Swing,Package,Jframe,我正在做一个演示项目,这次我创建了不同的包,并在这些包中放置了一些不同的JFrames 我希望在调用一个不同包的JFrame与另一个包的JFrame时打开它 但是,我有三个包,其中一个是package com.mkw.adminpanel包含一个名为Admin的JFrame,点击这里的按钮,我想要package com.mkw.loginpanel打开内部名为Start的JFrame。但它没有打开。和package com.mkw.studentpanel此包中名为开始的帧正在打开 名为pack

我正在做一个演示项目,这次我创建了不同的包,并在这些包中放置了一些不同的
JFrames

我希望在调用一个
不同包的
JFrame
与另一个
包的JFrame
时打开它

但是,我有三个包,其中一个是
package com.mkw.adminpanel
包含一个名为
Admin的
JFrame
,点击这里的按钮,我想要
package com.mkw.loginpanel
打开内部名为Start
JFrame
。但它没有打开。和
package com.mkw.studentpanel此包中名为开始的帧正在打开

名为
package com.mkw.adminpanel的包执行的JButton操作代码如下所示:

package com.mkw.adminpanel;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import com.mkw.studentpanel.Start;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Admin extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Admin frame = new Admin();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
public Admin() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);
    
    JButton btnNewButton = new JButton("New button");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            dispose();
            Start s = new Start();
            s.setVisible(true);
        }
    });
    btnNewButton.setBounds(175, 182, 89, 23);
    contentPane.add(btnNewButton);
   }
}

相关信息:一般来说,在同一个项目中使用相同名称的类不是一个好主意,即使是在不同的包中,但是您可以通过使用完全限定的名称来区分它们,因此替换
newstart(…)
,带有
com.mkw.loginpanel.Start(…)1)什么是
开始
?为了更快地获得更好的帮助,请添加或。硬编码数据以替换数据库。2) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。使用布局管理器,或者与布局填充和边框一起使用。3)也要同意@maloomeister<代码>JDialog
s!但是使用
卡片布局
不会阻止您构建代码?例如,您可以将子类化
JFrame
,而不是子类化
JPanel
,并将它们添加到您的
CardLayout
?“在Eclipse中,如果我使用card layout,代码太长了”它们不必太长!您可以将每个面板或视图编码为单个类,然后从使用卡片布局的代码中引用它们。