A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黄丽慧 于 2012-7-10 16:11 编辑

在看GUI视频的时候,用eclipse写了遍老师的示例,运行的时候问题就来了。


发现问题没有,我第一次没有设置框的名称,后来加了个名字“界面”,再运行一次的时候,前面的那个框并没有被覆盖掉。为了确认问题,我又运行了一次,咦,出来了第三个框,点击框的关闭根本就没有办法关闭,把程序关掉也不行,只能把eclipse关掉才行。有谁能告诉我这到底是怎么回事啊,为什么每次运行都会弹出一个窗体。。。。

6 个回复

正序浏览
张世威 发表于 2012-7-17 18:05
关于Eclipse里面控制台的用法:

1、Eclipse控制台是cmd控制台的一层包装,不过,添加了很多方便我们操作的 ...

画图画的不容易啊,给个技术分吧。。
回复 使用道具 举报
关于Eclipse里面控制台的用法:

1、Eclipse控制台是cmd控制台的一层包装,不过,添加了很多方便我们操作的东西
   终止程序只需要点击 控制台右上栏的 红方块
如下图:
        


2、关于控制台里面常用东西,请看上面的图例

3、你可以找一些Eclipse使用技巧的入门书籍(网上有很多PDF书籍)看一看,边看边练习,以后照着做就能熟练的操作Eclipse了。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 面包、牛奶、技术分总会有的!.

查看全部评分

回复 使用道具 举报
本帖最后由 陆强强 于 2012-7-10 15:49 编辑

毕老师也是加了窗口关闭监听事件的
public void init()
{
  f = new Frame("my frame");
   f.setBounds(300,100,600,500);
  f.setLayout(new FlowLayout());
  but = new Button("my button");
    f.add(but);
  myEvent();//注意这句,毕老师是把所有监听事件放一个函数,直接调用了函数。没有逐个加载
   f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()//这里毕老师用了内部类
{
        public void windowClosing(WindowEvent e)
        {
                System.exit(0);
        }
});

回复 使用道具 举报
public void setDefaultCloseOperation(int operation) 该方法是用来设置点击窗口右上角的关闭图标时,程序会怎样处理
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE

也就是说没有设置的话,默认点关闭时只是隐藏窗体,在后台进程中还可以看到,也就是我和你说的后台进程还存活,就是eclipse那种情况


import java.awt.*;
import javax.swing.*;
import static javax.swing.JFrame.EXIT_ON_CLOSE;

class ceshi
{
        public static void main(String[] args)
        {
             JFrame f = new JFrame("界面");
             f.setVisible(true);
             f.setSize(500,400);
             f.setLayout(new FlowLayout());
             Button b = new Button("计算器");
             f.setDefaultCloseOperation(EXIT_ON_CLOSE);  // 这个地方设置他
             f.add(b);
        }               
}

这样就没问题了
回复 使用道具 举报
打开你的任务管理器,在进程里观察你会发现,
当你用MyEclipse运行这个程序时你会发现在任务管理器的进程里边有一个 javaw.exe的一个进程,这个就是你现在正在编的得这个窗口程序的进程,而且MyEclipse即使编完了这个程序,这个程序的进程也不会结束,这样就会出现你每次运行都不会覆盖前边的,因为上一个进程还在运行你并没有关闭,这样就会在任务管理器里再出现一个javaw.exe的一个进程。

但是当你用cmd念得时候,你会在任务管理器的进程里边看到一个java.exe的进程,这个就是你的这个窗口程序的进程,当你关闭cmd或者Ctrl+C关闭再去编译时你会发现那个java.exe的进程没了,是因为cmd将这个进程关闭了,就不会出现你的程序关不掉的情况了

11.jpg (18.53 KB, 下载次数: 96)

Eclipse

Eclipse

11.jpg (13.94 KB, 下载次数: 91)

cmd

cmd

点评

这回懂了,解释的很是详细,谢谢了  发表于 2012-7-10 15:19

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1

查看全部评分

回复 使用道具 举报
你没有设置这些窗口时刻关闭的
setDefaultCloseOperation(EXIT_ON_CLOSE)关闭窗口并结束窗口所在的应用程序

点评

如果你是指设置窗口的事件处理的话,这个就跟我问的没有多大关系。我是想知道为什么eclipse会有这样的问题,我看到毕老师用cmd就没有这个问题。  发表于 2012-7-10 11:33
你能说清楚一点吗,我不太明白你的意思  发表于 2012-7-10 11:31
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马