我有什么: 两个实例化两个JFrame的类。
我想要实现的目标: 一个带按钮,另一个按钮在按钮上触发动作时将变为不可见。
问题: 我不知道如何追求这个。我该怎么做呢?
public class test1{
public static void main(String[] args){
JFrame frame = new JFrame("Blinkly Frame");
frame.setSize(100, 100);
frame.setVisible(true);
}
}
public class test2{
public static void main(String[] args){
JButton button = new JButton();
//when i will click this button i want to make invisible frame
}
}
答案 0 :(得分:1)
<强>解决方案:强> 创建具有Jframe或扩展JFrame的类的实例。
首先我们需要消失的JFrame。
public class BClass extends JFrame{
// Disappearing frame
public BClass()
{
this.setSize(300,300);//sets frame properties
this.setLocationRelativeTo(null);
}
}
接下来我们需要按住按钮的框架。 (添加了文档)
public class ACLass {
public static void main(String[] args) {
JFrame frame = new JFrame("Magician"); // instantiates
BClass b = new BClass(); // instantiates class that extends JFrame
b.setVisible(true);//
frame.setSize(300,300);//
frame.setVisible(true);//
frame.setLocationRelativeTo(null);//
JButton disappearButton = new JButton("Disappear"); //Adds button
disappearButton.addActionListener(new ActionListener() { // Adds action -When button is "clicked"
public void actionPerformed(ActionEvent e) { // method called when action fired
b.setVisible(false); //visibility changed
}
});
disappearButton.setBounds(0,0,300,150);
JButton appearButton = new JButton("appear"); //Adds button
appearButton.addActionListener(new ActionListener() { // Adds action -When button is "clicked"
public void actionPerformed(ActionEvent e) { // method called when action fired
b.setVisible(true); //visibility changed
}
});
disappearButton.setBounds(0,100,300,150);
frame.add(disappearButton, BorderLayout.PAGE_START); //adds button to frame
frame.add(appearButton, BorderLayout.PAGE_END); //adds button to frame
//I used border layout however use the a layout manager that works with your components/frame
}
}
异国情调说明
我将用魔术表演解释这一点,因为它提供了更好的理解。 首先,我们有一个魔术师(JFrame)和他的魔杖(JButton),然后我们有助手(第二个JFrame)将消失,一个阶段已经设置(所有属性定义等)。
首先,魔术师为魔杖添加了一些神奇的力量(处理被按下按钮的actionListener),当魔术师挥动它时会做出反应(动作按下a.k.a按钮被按下)。
接下来,我们向观众展示帮助者(实例化JFrame消失)。 当我们向观众展示助手时,我们现在可以显示他/她消失(现在我们可以通过类的实例变量调用setVisible)。
最后,魔术师挥动他的魔杖(发射动作),助手获得信号(actionPerformed方法)消失。然后帮助者可以调用
b.setVisible(false); //making the frame invisible
一般说明
https://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html
基本上,通过在另一个类中实例化一个对象,你也可以调用该类中的对象方法,即setVisible(boolean b)。
其他不太优选的解决方案: 如果你的消失类没有扩展JFrame但是实例化了一个.. 您需要创建一个实例变量
private JFrame j;
然后使用getter / setters访问该对象,然后允许您调用其方法。
secondClass.getFrame().setVisible(true);//getFrame returns the JFrame
然后将其添加到actionPerformed方法。
您还可以使用静态实例变量并在actionPerformed方法中静态引用它...(不推荐)
secondClass.frame.setVisible(true);