现在通过一个函数返回一个JButton按钮 然后把它添加到JFrame里面 现在想通过点击按钮吧这个JFrame关闭 怎么写函数啊 用this.setVisible(false)不行
还有现在有一个JFrame A,上面有一个按钮,点击一下弹出另一个 JFrame B 怎么样通过点击B上面的按钮吧B关闭 再把A显示出来
怎么写??
还有现在有一个JFrame A,上面有一个按钮,点击一下弹出另一个 JFrame B 怎么样通过点击B上面的按钮吧B关闭 再把A显示出来
怎么写??
在JFrame A中按钮事件中调用方法显示B窗体,同时把JFrameA传到B窗体中
private void showB()
{
dispose();
JFrame b = new JFrameB(this);
}
在B窗体的按钮事件中调用方法关掉B窗体同时显示A窗体
private void showA()
{
dispose();
a.show();
}注意在JFrameB中定义,构造方法中将其赋值
private JFrame a;
public JFrameB(JFrame a)
{
this.a = a;
//省略其他代码
}
FF ff;
JButton b, c; public TestFrame() {
setLayout(null);
b = new JButton();
b.setBounds(20, 20, 100, 50);
add(b);
setTitle("窗口一");
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
b.addActionListener(new bActionListener(this));
} public static void main(String[] args) {
TestFrame f = new TestFrame();
} class bActionListener implements ActionListener {
TestFrame e; bActionListener(Object e) {
this.e = (TestFrame) e;
} public void actionPerformed(ActionEvent e) {
this.e.newFrame();
}
} class cActionListener implements ActionListener {
TestFrame e; cActionListener(Object e) {
this.e = (TestFrame) e;
} public void actionPerformed(ActionEvent e) {
this.e.oldFrame();
}
} class FF extends JFrame {
TestFrame e; public FF(TestFrame e) {
this.e = e;
setLayout(null);
c = new JButton();
c.setBounds(20, 20, 100, 50);
add(c);
setTitle("窗口二");
setSize(500, 600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.addActionListener(new cActionListener(this.e));
}
} public void newFrame() {
this.setVisible(false);
ff = new FF(this);
} public void oldFrame() {
this.setVisible(true);
ff.setVisible(false);
}
这个应该是可以的,你不能实现的原因可能是你在构造方法中加入了
setVisible(true);
而导致你在点击按钮执行关闭的时候没有实现。
解决的方法是,你可以将构造方法中的
setVisible(true);
删掉,然后在主方法中(如果是单个窗口情况)或点击按钮的监听器中实例化另一个窗口类的时候(弹出窗口的情况)时候调用setVisible(true);方法。这样应该就可以实现了。PS:如果是弹出窗口的话,建议使用setVisible(false);来隐藏窗口,这样可以节省资源,
如果是单个窗口的话,就可以使用dispose();方法了,直接关闭窗口。希望可以帮助到你!!
dispose() 才是正道 ,还有更血腥的 System.exit()有个很卑鄙的办法:
class A{
B arg = null;
setB( B arg );
}class B{
A arg = null;
setA( A arg );
}
持有对方引用了~ 后面你懂的~