Java 在JPanel上使用Jbutton隐藏/显示JFrame
在我的Swing应用程序中,我有两个JFrame A和B。当我单击JFrame A上的按钮时,它会打开JFrame B并隐藏它自己(我设法做到了这一点) 在JFrame B上,我在JTabbedPane上放置了4个JPanel。每个JPanel有2个按钮 当我在JPanels上单击Jbutton并再次显示JFrame A时,我试图隐藏JFrame B 我该怎么做 //JPanel类 公共类AddItemPanel扩展了javax.swing.JPanel{Java 在JPanel上使用Jbutton隐藏/显示JFrame,java,swing,jframe,Java,Swing,Jframe,在我的Swing应用程序中,我有两个JFrame A和B。当我单击JFrame A上的按钮时,它会打开JFrame B并隐藏它自己(我设法做到了这一点) 在JFrame B上,我在JTabbedPane上放置了4个JPanel。每个JPanel有2个按钮 当我在JPanels上单击Jbutton并再次显示JFrame A时,我试图隐藏JFrame B 我该怎么做 //JPanel类 公共类AddItemPanel扩展了javax.swing.JPanel{ public AddItemPan
public AddItemPanel() {
initComponents();
}
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getSource() == btnCancel)
{
ItemFrame d = new ItemFrame();
d.setVisible(false);// not working
this.setVisible(false);// not working
}
}
}
//JFrame类
公共类ItemFrame扩展了javax.swing.JFrame{
public ItemFrame() {
initComponents();
jTabbedPane1.add("Add Items",new AddItemPanel());
jTabbedPane1.add("Delete Items",new DeleteItemPanel());
jTabbedPane1.add("Update Items",new UpdateItemPanel());
jTabbedPane1.add("Search Items",new SearchItemPanel());
}
}试试这个例子,希望对你有用
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.*;
import javax.swing.*;
public class JframeTest implements ActionListener
{
JButton b1;
JButton b2;
JFrame f1 ;
JFrame f2;
public void init()
{
f1 = new JFrame("Frame one");
f2 = new JFrame("Frame two");
f1.setSize(400,400);
f2.setSize(400,400);
f1.setLayout(new FlowLayout());
f2.setLayout(new FlowLayout());
b1 = new JButton("Open Frame two");
b2= new JButton("Open Fram one");
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
p1.setBackground(Color.white);
p2.setBackground(Color.white);
p1.add(b1);
p2.add(b2);
f1.getContentPane().add(p1);
f2.getContentPane().add(p2);
f1.setVisible(true);
f2.setVisible(false);
f1.setDefaultCloseOperation(3);
f2.setDefaultCloseOperation(3);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == b1)
{
f1.setVisible(false);
f2.setVisible(true);
}else if(evt.getSource()==b2)
{
f1.setVisible(true);
f2.setVisible(false);
}
}
public JframeTest()
{
this.init();
}
public static void main(String...argS)
{
new JframeTest();
}
}
使用“setVisible()”方法隐藏和显示框架请注意,框架B应该是一个(可能是模态的)对话框,框架a应该是主应用程序。而且永远不会消失。
公共类Java Extendes JFrame实现ActionListener
名称不正确的类,除非添加新功能,否则不要扩展frame,最好创建匿名侦听器或操作。。我不会推荐此代码用于研究。此外,对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。感谢您的回复。我成功地以这种方式运行了程序。但当我将Jbutton放在JPanel上时,我不能使用setVisible()方法隐藏或显示第一个JFrame。@AndrewThompson谢谢您的评论。我会努力在这方面做得更好future@Azad很抱歉我忘了提到我使用了4个扩展的JPanel作为单独的类。在我的jb框架上,我有Jtabpane。我像这样添加了这4个JPanelcode
PublicItemFrame(){jTabbedPane1.add(“添加项目”,new AddItemPanel());jTabbedPane1.add(“删除项目”,new DeleteItemPanel());;}code
每个面板有2个按钮。我想做的是,当我在每个Jpanel上单击“取消”按钮时,我想隐藏当前JFrame并再次显示第一帧。@user2033382:您可以编辑您的问题以包含新代码,就像Azad Eng根据Andrew的有用注释“+1”更新其答案一样。另请参见,这也适用于小程序。