日期:2014-05-20  浏览次数:20738 次

程序运行没反应 怎么回事???
各位大侠,你们好.
因为我是初学者,跟着视频学,代码完全是跟视频里一样的.可是程序运行后没有反应.视频教学里却正常的.不知道为什么?
申明:编译器应该是正常的,写其他程序是可以的.
这个程序主要是实现创建一个窗口,并在窗口中添加按钮,当用户单击按钮后将合乎弹出一个对话框窗体。
代码在下面:
package swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyJDialog extends JDialog{ // 创建新类继承JDialog类
  public MyJDialog(){
  // 实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
  super(new MyJFrame(),true);
  Container cp=getContentPane(); // 创建一个容器
  cp.add(new JLabel("对话框")); // 在容器中添加标签
  setSize(100,100);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  }

public static void main(String[] args) {
  new MyJDialog();
  }
}

class MyJFrame extends JFrame{
  public MyJFrame(){
  Container cp=getContentPane();
  JLabel jl=new JLabel("这是个JFrame窗体");
  cp.add(jl);
  JButton jb=new JButton("Press me");
  cp.add(jb);
  jb.addActionListener(new ActionListener(){ //为按钮添加鼠标单击事件.
  public void actionPerformed(ActionEvent arg0){
  new MyJDialog().setVisible(true); 
  }
  });
}
}

------解决方案--------------------
如果要显示JDialog this.show();
如果要显示JFrame 添加this.setVisible(true);

Java code


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyJDialog extends JDialog { // 创建新类继承JDialog类
    public MyJDialog() {
    // 实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
    super(new MyJFrame(), true);

    Container cp = getContentPane(); // 创建一个容器
    cp.add(new JLabel("对话框")); // 在容器中添加标签
    setSize(100, 100);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    this.show();//////////////////////////////////////////////////////////////////////
    }

    public static void main(String[] args) {
    new MyJDialog();
    }
}

class MyJFrame extends JFrame {
    public MyJFrame() {
    Container cp = getContentPane();
    JLabel jl = new JLabel("这是个JFrame窗体");
    cp.add(jl);
    JButton jb = new JButton("Press me");
    cp.add(jb);
    jb.addActionListener(new ActionListener() { // 为按钮添加鼠标单击事件.
            public void actionPerformed(ActionEvent arg0) {
            new MyJDialog().setVisible(true);
            }
        });
    this.setVisible(true);////////////////////////////////////////////////////////////////
    }
}

------解决方案--------------------
上面有了答案 。。。。。。。。。。
------解决方案--------------------
因为show已经过期了,用Component.setVisible(boolean) 取代之。