黑马程序员技术交流社区

标题: eclipse调试界面程序时出现的问题,有没有人发现问题? [打印本页]

作者: 黄丽慧    时间: 2012-7-10 10:19
标题: eclipse调试界面程序时出现的问题,有没有人发现问题?
本帖最后由 黄丽慧 于 2012-7-10 16:11 编辑

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


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

作者: 张頔    时间: 2012-7-10 10:50
你没有设置这些窗口时刻关闭的
setDefaultCloseOperation(EXIT_ON_CLOSE)关闭窗口并结束窗口所在的应用程序
作者: 张頔    时间: 2012-7-10 15:16
打开你的任务管理器,在进程里观察你会发现,
当你用MyEclipse运行这个程序时你会发现在任务管理器的进程里边有一个 javaw.exe的一个进程,这个就是你现在正在编的得这个窗口程序的进程,而且MyEclipse即使编完了这个程序,这个程序的进程也不会结束,这样就会出现你每次运行都不会覆盖前边的,因为上一个进程还在运行你并没有关闭,这样就会在任务管理器里再出现一个javaw.exe的一个进程。

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

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

Eclipse

Eclipse

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

cmd

cmd

作者: 张頔    时间: 2012-7-10 15:23
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);
        }               
}

这样就没问题了
作者: 陆强强    时间: 2012-7-10 15:46
本帖最后由 陆强强 于 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);
        }
});


作者: 张世威    时间: 2012-7-17 18:05
关于Eclipse里面控制台的用法:

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


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

3、你可以找一些Eclipse使用技巧的入门书籍(网上有很多PDF书籍)看一看,边看边练习,以后照着做就能熟练的操作Eclipse了。
作者: 张世威    时间: 2012-7-17 18:08
张世威 发表于 2012-7-17 18:05
关于Eclipse里面控制台的用法:

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

画图画的不容易啊,给个技术分吧。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2