JFrame、JDialog close

 

package common;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

/*2015-5-26*/
public class SwingConsole {

    public static void run(final JFrame frame,final int width,final int height){
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setSize(width, height);
                frame.setTitle(frame.getClass().getSimpleName());
                frame.pack();// //该代码依据放置的组件设定窗口的大小使之正好能容纳你放置的所有组件
                frame.setVisible(true);
                frame.setLocationRelativeTo(null);
            }
        });
    }
}

 

package dialogclose;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

/*2015-6-3*/
public class JFrameDemo extends JFrame {
    private static final long serialVersionUID = 1L;
    private JButton button;
    private JTextField result;

    public JFrameDemo() {
        // this.setLayout(new GridLayout(4, 4));
        this.setLayout(new FlowLayout());
        button = new JButton("click");
        getContentPane().add(button);
        result = new JTextField("...");
        result.setPreferredSize(new Dimension(200, 20));
        getContentPane().add(result);
    }

    public static void main(String[] args) {
        final JFrameDemo frame = new JFrameDemo();
        frame.button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("before open dialog");
                JDialogController dlg = new JDialogController(frame);
                frame.result.setText("Result:" + dlg.isCancel());
                System.out.println("after close dialog");
                if (dlg.isCancel()) {
                    System.out.println("is canceled");
                    return;
                }
                System.out.println(dlg.isCancel());
            }
        });

        common.SwingConsole.run(frame, 800, 600);

    }

}

 

package dialogclose;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/*2015-6-3*/
public class JDialogController {

    private boolean cancel = true;

    public JDialogController(JFrame parent) {
        final JDialogDemo dlg = new JDialogDemo(parent);
        dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        /*dlg.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                int result = JOptionPane.showConfirmDialog(dlg, "是否退出本系统!", "退出消息框", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (result == JOptionPane.YES_OPTION)
                {
                    System.out.println("Choose Yes");
                    System.exit(0);
                }
                else if (result == JOptionPane.NO_OPTION)
                {
                    System.out.println("Choose No");
                    dlg.setVisible(true);
                    dlg.validate();
                }
            }

        });*/

        dlg.setVisible(true);
    }

    public boolean isCancel() {
        return cancel;
    }
}

 

package dialogclose;

import java.awt.FlowLayout;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;

/*2015-6-3*/
public class JDialogDemo extends JDialog {
    private static final long serialVersionUID = 1L;

    private boolean cancel=true;
    public JDialogDemo(JFrame parent) {
        super(parent,true);
        this.setLayout(new FlowLayout());
        this.setSize(400, 200);

        this.add(new JTextField("test"));
        this.setLocationRelativeTo(null);
    }
    public boolean isCancel() {
        return cancel;
    }
}

 

关闭JDialog的几个方法:
1、如果你只是想让该对象隐藏起来,就在按扭的事件处理方法中让使用dialog.setVisible(false);方法;
2、如果你想关闭的时候让该对话框释放资源而又不退出程序,可以使用dialog.dispose();
方法或dialog.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

  dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

3、如果你想关闭的时候退出程序可以使用System.exit(0); 
用dispose()关闭
this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);   
this.addWindowListener(new WindowAdapter(){     
  public void windowClosing(WindowEvent e) {       
  dispose();     
  }   
});
http://www.cnblogs.com/jaward/articles/2826924.html

JTextField设置长度
JTextField jtf = new JTextField(130); 

public void setPreferredSize(Dimension preferredSize)
http://www.iteye.com/problems/89359

JFrame类的其他常用方法:
 1.setBounds(int x,int y,int width,int height):参数x,y指定窗口出现在屏幕的位置;参数width,height指定窗口的宽度和高度。单位是像素。
 2.setSize(int width,int height):设置窗口的大小,参数width和height指定窗口的宽度和高度,单位是像素。
 3.setBackground(Color c):以参数 c设置窗口的背景颜色。
 4.setVisible(boolean b):参数b设置窗口是可见或不可见。JFrame默认是不可见的。
 5.pack():用紧凑方式显示窗口。如果不使用该方法,窗口初始出现时可能看不到窗口中的组件,当用户调整窗口的大小时,可能才能看到这些组件。
http://www.cnblogs.com/Coda/p/4550219.html

 

时间: 2024-08-31 20:58:40

JFrame、JDialog close的相关文章

JFrame,JDialog,JInternalFrame关闭的拦截

有很多刚开始学Swing的人经常问JFrame关闭的时候先询问下是否关闭,即弹出一个对话框让用户点击选择YES或NO,其实稍微进去查看源代码就能找到答案.我们找到那里是发出关闭事件的地方,我们在那个地方进行拦截就可以了,查看源代码可以知道在JFrame中有这么一个方法: protected void processWindowEvent(WindowEvent e) { //do Samething............. } 这个方法一直追上去可以发现它是由Window类中派生出来的,我们先

《Java数字图像处理:编程技巧与应用实践》——3.2 JFrame组件与Main UI实现

3.2 JFrame组件与Main UI实现 要想真正把读入图像的BufferedImage对象实例显示到UI上为眼睛所见,还需要使用JFrame组件,把JPanel组件实例通过add()方法加到JFrame的内容面板上.在Java Swing中只有JFrame.JDialog与JApplet属于顶层容器,其他组件最终必须依附于顶层容器才能够正确显示,使用JFrame来显示JPanel与BufferedImage对象实例大致可以通过如下几步实现. 1)在JPanel中通过重载JComponent

java-请教JFrame和Frame的区别

问题描述 请教JFrame和Frame的区别 比如我想做一个小动画,让球在移动.用paint和线程,不断重画,然后我发现用Frame可以成功实现.但是用JFrame却会出现出现新的球,原来的球还在,即可以看到几个球..这是为什么 解决方案 public void paint(Graphics g) { Color c=g.getColor(); g.setColor(new Color(122,122,123)); g.fillOval(x, y, 50, 50); g.setColor(c);

驯服Tiger: 利用Tiger为窗格减压

欢迎来到没有内容窗格的世界.在研究如何可以不 使用内容窗格之前,让我们先看一下内容窗格是什么,以及它为什么存在.在 Swing 中,所有顶级容器,比如 JFrame.JApplet 和 JDialog,都是由 JRootPane 来内部管理的.但是,为什么这些帧不自己管理自己呢?根窗格使顶级对象能够拥有菜单栏.将对象拖到其他组件之上的 glass 窗格,以及一个用于包含所有容器组件的内容窗格.而您要用这个内容窗格来设置布局管理器和添加组件,如图 1 所示.因为所有的顶级容器都需要相同的对象集合,

获取一个Jpanel的父容器有多难

 JDialog parent = (JDialog) this.getParent().getParent().getParent().getParent(); javax.swing.JPanel-->javax.swing.JLayeredPane-->javax.swing.JRootPane-->com.dialog.CommonDialog(Jpanel存放的Dialog容器) 一.Swing GUI编程的基本步骤:1.选择容器:2.调用getContenPane()方法获得

JAVA图形界面(GUI)之容器

在Swing中,容器可以用来组织界面布局,容器中可以添加容器和组件.常用的有如下几种: 顶层容器:JFrame,JApplet,JDialog,JWindow 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane. 这篇博客将抽取其中几个常用容器为大家介绍,剩余的在之后用到了再介绍. JFrame JFrame是是个顶层容器,是屏幕上window

TIJ阅读笔记(第十四章)

笔记 14: 创建窗口与Applet 设计的宗旨是"能轻松完成简单的任务,有办法完成复杂的任务". 本章只介绍Java 2的Swing类库,并且合理假定Swing是Java GUI类库的发展方向. 本章的开头部分会讲,用Swing创建applet与创建应用程序有什么不同,以及怎样创建一个既能当applet在浏览器里运行,又能当普通的应用程序,在命令行下运行程序. Swing类库的体系庞大,而本章的目的也只是想让你从基础开始理解并且熟悉这些概念.如果你有更高的要求,只要肯花精力研究,Sw

JavaFX学习曲线日记-2:声明用户接口

我已经使用Java语言定义用户接口近十年了,当我第一次体验JavaFX脚本时便马上感到 了这两种不同环境之间的差异.尽管程序员在Java语言中使用过程式代码来定义用户接口, 而在JavaFX脚本语言中你能够使用声明语句来定义用户接口.这是两者之间最大的不同,要 适应后者的确需要花费一定的时间和精力. 为了学习这种创建UI的全新声明风格, 我决定将一个从前使用Java语言实现的应用UI移植到JavaFX脚本上.于是我挑选了一个在 Java语言中心的Swingworker教学中使用的图片浏览应用.原

推荐一个J2ME的控件库(Gmeity J2ME Controls)

问题描述 j2me控件库(GmeityJ2MEControls)新鲜出炉,欢迎使用J2ME应用开发过程中,系统提供的控件往往不能满足开发者的需求,而开发者在Canvas上手动绘制各种控件比较繁琐,GmeityJ2ME控件库正是为了满足大家快速开发个性化应用而诞生的,您可以在本控件库的基础上少加修改就能够设计出一套符合您自己需要的界面库.本控件库实现了大多数常用的控件,如JCheckbox.JStatic.JRadioCtrl.JDialog等控件.本控件库默认界面主题采用了windowsxpRo