已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
15小时前关门了。
Improve this question
我正在开发一个项目,其中我有“Class1”,“Class2”和“Class3”。Class2和Class3都创建了JFrame,每个都包含各种JButton,JLabel和其他swing组件。我如何在Class1中实现这一点**我可以引用Class2中的JButton,并使用一个action listener将Class2的visibilty设置为false,将Class3的visibilty设置为true。
我试过这个:在我的main方法中将Class2设置为visbile没有问题,但是一旦我开始实现Class3,事情就不起作用了。
摘要:从其他类启动jbutton并使用引用该jbutton的操作侦听器存在问题。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class Class1 extends JFrame implements ActionListener
{
public static void main(String[] args) {
Class2 frameFromclass2 = new Class2();
frameFromclass2.setVisible(true);
}
Class2 buttonMovetoclass3 = new Class2();
public void actionPerformed(ActionEvent e) {
if (buttonMovetoclass3 == e.getSource()) {
Class2 frameFromclass2 = new Class2();
frameFromclass2.setVisible(false);
Class3 frameFromclass3 = new Class3();
frameFromclass3.setVisible(true);
}
}
}
1条答案
按热度按时间nc1teljy1#
你的问题的一部分是由于缺乏对变量作用域的理解而引起的,另一部分则是由于处理变量作用域的方法不正确。
我们无法看到其他类的构造函数中有什么,所以我不能说是否也有问题发生。但是,我可以提供更好的替代方案。
通常情况下,您希望保留1个
JFrame
,即使您可以使用弹出窗口或多个“页面”。考虑使用多个JPanels
,每个布局一个。或者您可以使用JTabbedPane
,并且在每个选项卡上有不同的信息。出于登录目的,一个常见的选项是JOptionPane
或JDialog
。如果您坚持使用多个JFrames
,并且希望在它们之间移动组件,则类中的变量(不是一个方法)应该用来存储信息,然后使用公共方法从其他类访问这些变量。你应该销毁它而不是隐藏它。这里有一个很好的资源,有各种方法可以做到这一点。