Java Swing:连接到第二帧的可视界面
我有两帧。我想从第一帧打开第二帧。我试过这个,但它导致了一个例外Java Swing:连接到第二帧的可视界面,java,swing,Java,Swing,我有两帧。我想从第一帧打开第二帧。我试过这个,但它导致了一个例外 class aboutaction implements ActionListener { public void actionPerformed(ActionEvent e) { frame.dispose(); aboutInfo about = new aboutInfo(); about.frame.setVisible(true);
class aboutaction implements ActionListener {
public void actionPerformed(ActionEvent e) {
frame.dispose();
aboutInfo about = new aboutInfo();
about.frame.setVisible(true);
}
}
about.addActionListener(new aboutaction());
这是完整的程序:。您的基本问题是由于对Swing工作原理的误解和糟糕的设计而产生的
空点异常
基本上,您将类定义为
public class aboutInfo extends JFrame {
private JPanel contentPane;
javax.swing.JFrame frame;
现在,混乱开始了,您基本上有两个帧,但您只向aboutInfo
的实例添加组件
这里的基本答案是,摆脱框架,这只是混淆了问题。事实上,您首先不应该从JFrame
扩展,您应该真正使用类似于JPanel
的东西,只需将类的实例添加到JFrame
或JDialog
的实例中,或者添加任何您想要的容器,您的基本问题是NullPointerException
由于对Swing工作原理的误解和糟糕的设计而产生的
基本上,您将类定义为
public class aboutInfo extends JFrame {
private JPanel contentPane;
javax.swing.JFrame frame;
现在,混乱开始了,您基本上有两个帧,但您只向aboutInfo
的实例添加组件
这里的基本答案是,摆脱框架,这只是混淆了问题。事实上,您首先不应该从JFrame
扩展,您应该真正使用类似于JPanel
的东西,只需将类的实例添加到JFrame
或JDialog
的实例中,或者添加到您想要的任何容器中您看到了什么异常?在java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)在java.awt.EventQueue$4.run(未知源)java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)java.awt.EventQueue.dispatchEvent(未知源)java.awt.EventQueue.dispatchEvent(未知源)java.security.AccessController.doPrivileged(本机方法)java.security.ProtectionDomain$4.run(未知源)java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)在java.awt.EventDispatchThread.PumpeEventsForFilter(未知源)在java.awt.EventDispatchThread.PumpeEventsForHierarchy(未知源)在java.awt.EventDispatchThread.PumpeEvents(未知源)在java.awt.EventDispatchThread.run(未知源)在java.awt.EventDispatchThread,about.frame
是null
(从它的发音来看AboutInfo
扩展了JFrame
anyway@kriszhelyazkov:您应该编辑问题并将堆栈跟踪添加到其中,而不是作为注释。您看到了什么异常?位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)在java.awt.EventQueue$4.run(未知源)在java.awt.EventQueue$4.run(未知源)在java.security.AccessController.doPrivileged(本机方法)在java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)在java.awt.EventQueue.dispatchEvent(未知源)在java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)java.awt.EventDispatchThread.pumpEventsForFilter(未知源)java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)java.awt.EventDispatchThread.pumpEvents(未知源)java.awt.EventDispatchThread.run(未知源)java.awt.EventDispatchThread.pumpEvents(未知源)我是否应该猜测一下,说,about.frame
是null
(从它的发音来看AboutInfo
extensedJFrame
anyway@kriszhelyazkov:您应该编辑问题并将堆栈跟踪添加到其中,而不是作为注释。