页面1
import java.awt.event.*;
import javax.swing.*;public class SwingDemo extends JFrame implements ActionListener
{
JButton b;
public SwingDemo() 
{
b=new JButton("kaish");
b.addActionListener(this);
this.getContentPane().add(b);
this.setVisible(true);
}
public static void main(String[] args) 
{
JFrame.setDefaultLookAndFeelDecorated(true);//改变感官
SwingDemo frame=new SwingDemo();
frame.setResizable(false);//关闭最大化
frame.setSize(320,300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent arg0)
{
if(arg0.getSource().equals(b))
{
this.enable();
new SwingTable(this);
}
}
public void enable() 
{
if(this.isEnabled()==true)
this.setEnabled(false);
else if(this.isEnabled()==false)
this.setEnabled(true);
}
}
页面2
import java.awt.event.*;
import javax.swing.*;public class SwingTable extends JFrame 
{
SwingDemo ma;
public SwingTable(SwingDemo ma) 
{
this.ma=ma;
JFrame.setDefaultLookAndFeelDecorated(true);//改变感官
this.setResizable(false);//关闭最大化
this.setSize(320,300);
this.setVisible(true);
this.setVisible(true);
}
public void processWindowEvent(WindowEvent e)
{
if(e.getID()==WindowEvent.WINDOW_CLOSING)
{
if(ma.isEnabled()==false)
{
ma.enable();
}
this.dispose();//释放资源
super.processWindowEvent(e);//处理此组件上发生的窗口事件
}
}
}
我想完成的是页面2关闭的时候页面的Enabled解除!但是怎么都不行!

解决方案 »

  1.   

    if(this.isEnabled()==true)
    this.setEnabled(false);
    else if(this.isEnabled()==false)
    this.setEnabled(true);
    楼主这代码写的高啊
    如果真就 set(false)
    接下来又判断是否假:注意刚才已经set(false)了!!!!!
    当然接着假也成立
    这逻辑有问题
      

  2.   

    if(this.isEnabled()==true)       如果激活状态
    this.setEnabled(false);设置为未激活状态
    else if(this.isEnabled()==false)如果是未激活状态
    this.setEnabled(true);设置为激活状态
    else----第一个语句成立,就跳出了!不会执行第二个语句吧?
    有点晕了
      

  3.   

    你说的好像不对!
    我即使在程序中把调用这个函数的this.enable();设置为
    this.setEnabled(false);
    this.setEnabled(true);
    都不行!感觉是不是应该得刷新面板或者有其他的方法~
      

  4.   

    public class SwingDemo extends JFrame implements ActionListener {
    JButton but; SwingTable st; public SwingDemo() {
    but = new JButton("按钮");
    but.addActionListener(this);
    this.getContentPane().add(but);
    } public static void main(String[] args) { SwingDemo frame = new SwingDemo();
    frame.setSize(320, 300);
    frame.setVisible(true);
    } public void actionPerformed(ActionEvent arg0) {
    if (arg0.getSource().equals(but)) {
    this.setEnabled(false);
    new SwingTable(this);
    }
    }}class SwingTable extends JFrame {
    SwingDemo sd; public SwingTable(SwingDemo ma) {
    sd = ma;
    this.setSize(320, 300);
    this.setLocation(320,300);
    this.setVisible(true);
    } public void processWindowEvent(WindowEvent e) {
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
    sd.setEnabled(true);
    this.dispose();// 释放资源
    super.processWindowEvent(e);// 处理此组件上发生的窗口事件
    }
    }
    }
      

  5.   

    晕!原来enable方法还有这样的功能~我还以为。。
    谢谢了!给分!
      

  6.   

    把enable()方法改个名字就ok了!
    public void enable(boolean b);是个过时的方法,被setEnabled();取代.不要叫自己的方法和api的方法重名!!!还有,你最起码应该在SwingDemo中执行"关闭"按扭的操作吧,要完全释放资源比较好,不过这和你说的问题没有关系,最好这样做就对了!