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,代码太长了”它们不必太长!您可以将每个面板或视图编码为单个类,然后从使用卡片布局的代码中引用它们。