java——图形界面编程

@源程序来自《Java程序设计标准教程(第二版)》邱加永


12.2  Swing容器


12.2.1  顶层容器

顶层容器可以独立存在,位于java.lang.Swing包层次的顶端,Swing顶层容器类包括JApplet、JFrame、JDialog、JWindow,分别从java.awt包中的Applet、Frame、Dialog和Window类直接衍生出来。


JFrame

  1. import javax.swing.JFrame;  
  2. /** JFrame使用示例 */  
  3. public class JFrameTest {  
  4.     public static void main(String[] args) {  
  5.         //创建一个顶层容器窗口  
  6.         JFrame frame = new JFrame();  
  7.         //设置尺寸  
  8.         frame.setSize(300,300);  
  9.         //设置它的左上角的坐标  
  10.         frame.setLocation(300,200);  
  11.         //一次性设置尺寸和左上角的坐标  
  12.         frame.setBounds(300,200,300,300);  
  13.         //设置标题  
  14.         frame.setTitle("第一个窗体");  
  15.         //设置不允许调整窗口的大小  
  16.         frame.setResizable(false);  
  17.         //设置它的可见性  
  18.         frame.setVisible(true);  
  19.     }  
  20. }  
import javax.swing.JFrame;
/** JFrame使用示例 */
public class JFrameTest {
	public static void main(String[] args) {
		//创建一个顶层容器窗口
		JFrame frame = new JFrame();
		//设置尺寸
		frame.setSize(300,300);
		//设置它的左上角的坐标
		frame.setLocation(300,200);
		//一次性设置尺寸和左上角的坐标
		frame.setBounds(300,200,300,300);
		//设置标题
		frame.setTitle("第一个窗体");
		//设置不允许调整窗口的大小
		frame.setResizable(false);
		//设置它的可见性
		frame.setVisible(true);
	}
}

JDialog


12.2.2通用容器

通用容器是中间容器,它们不能独立存在,必须存放到其他容器中,常用的通用容器有JPanel、JScrollPane、JToolBar、JSplitPane、JTabbedPane。


面板JPanel

  1. import java.awt.Color;  
  2. import javax.swing.JFrame;  
  3. import javax.swing.JPanel;  
  4. /** JPanel使用示例 */  
  5. public class JPanelTest {  
  6.     public static void main(String[] args) {  
  7.         JFrame frame = new JFrame;  
  8.         frame.setLayout(null);  //自由布局  
  9.         frame.setBounds(300,300,320,320);  //边大小  
  10.         frame.setResizable(false);  
  11.         frame.setTitle("窗体中添加面板");  
  12.   
  13.         JPanel panel = new JPanel();  //创建面板  
  14.         panel.setBounds(60,50,200,200);  
  15.         panel.setBackground(new Color(204,204,255));  //面板颜色  
  16.         frame.add(panel);  //将面板加到窗体上  
  17.   
  18.         //设置关闭窗口时退出应用程序  
  19.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  20.         frame.setVisible(true);  //显示窗体  
  21.     }  
  22. }  
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
/** JPanel使用示例 */
public class JPanelTest {
	public static void main(String[] args) {
		JFrame frame = new JFrame;
		frame.setLayout(null);  //自由布局
		frame.setBounds(300,300,320,320);  //边大小
		frame.setResizable(false);
		frame.setTitle("窗体中添加面板");

		JPanel panel = new JPanel();  //创建面板
		panel.setBounds(60,50,200,200);
		panel.setBackground(new Color(204,204,255));  //面板颜色
		frame.add(panel);  //将面板加到窗体上

		//设置关闭窗口时退出应用程序
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);  //显示窗体
	}
}

滚动面板JScrollPane

  1. import javax.swing.JFrame;  
  2. import javax.swing.JScrollPane;  
  3. /** JScrollPane使用示例 */  
  4. public class JScrollPaneTest {  
  5.     public static void main(String[] args) {  
  6.         JFrame frame = new JFrame();  
  7.         frame.setLayout(null);  //自由布局  
  8.         frame.setBounds(300,300,320,320);  //边大小  
  9.         frame.setResizable(false);  
  10.         frame.setTitle("窗体中添加滚动面板");  
  11.   
  12.         //创建指定滚动策略的面板  
  13.         JScrollPane panel = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScorllPane.HORIZONTAL_SCROLLBAR_ALWAYS);  
  14.         panel.setBounds(60,50,200,200);  
  15.         frame.add(panel);  
  16.   
  17.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  18.         frame.setVisible(true);  
  19.     }  
  20. }  
import javax.swing.JFrame;
import javax.swing.JScrollPane;
/** JScrollPane使用示例 */
public class JScrollPaneTest {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setLayout(null);  //自由布局
		frame.setBounds(300,300,320,320);  //边大小
		frame.setResizable(false);
		frame.setTitle("窗体中添加滚动面板");

		//创建指定滚动策略的面板
		JScrollPane panel = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScorllPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		panel.setBounds(60,50,200,200);
		frame.add(panel);

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

工具栏JToolBar

  1. import java.awt.BorderLayout;  
  2. import java.net.URL;  
  3. import javax.swing.JFrame;  
  4. import javax.swing.JToolBar;  
  5. /** 工具栏的使用 */  
  6. public class JToolBarTest {  
  7.     public static void main(String[] args) {  
  8.         //获取指定路径名的图片URL  
  9.         ClassLoader loader = Thread.currentThread().getContextClassLoader();  
  10.         URL url1 = loader.getResource("newclass_wiz.gif");  
  11.         URL url2 = loader.getResource("save_edit.gif");  
  12.         URL url3 = loader.getResource("delete_edit.gif");  
  13.         URL url4 = loader.getResource("print_edit.gif");  
  14.         //创建图标按钮  
  15.         JButton button1 = new JButton(new ImageIcon(url1));  
  16.         button1.setToolTipText("新建文件");  
  17.         JButton button2 = new JButton(new ImageIcon(url2));  
  18.         button2.setToolTipText("保存文件");  
  19.         JButton button3 = new JButton(new ImageIcon(url3));  
  20.         button3.setToolTipText("删除");  
  21.         JButton button4 = new JButton(new ImageIcon(url4));  
  22.         button4.setToolTipText("打印");  
  23.   
  24.         JToolBar bar = new JToolBar();  //创建工具集  
  25.         bar.add(button1);  //添加图标按钮  
  26.         bar.add(button2);  
  27.         bar.addSeparator();  //添加分隔符  
  28.         bar.add(button3);  
  29.         bar.add(button4);  
  30.         bar.setFloatable(true);  //设置可浮动  
  31.   
  32.         JFrame frame = new JFrame("工具栏使用示例");  
  33.         frame.add(bar,BorderLayout.NORTH);  
  34.         frame.setSize(300,300);  
  35.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  36.         frame.setVisible(true);  
  37.     }  
  38. }  
import java.awt.BorderLayout;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JToolBar;
/** 工具栏的使用 */
public class JToolBarTest {
	public static void main(String[] args) {
		//获取指定路径名的图片URL
		ClassLoader loader = Thread.currentThread().getContextClassLoader();
		URL url1 = loader.getResource("newclass_wiz.gif");
		URL url2 = loader.getResource("save_edit.gif");
		URL url3 = loader.getResource("delete_edit.gif");
		URL url4 = loader.getResource("print_edit.gif");
		//创建图标按钮
		JButton button1 = new JButton(new ImageIcon(url1));
		button1.setToolTipText("新建文件");
		JButton button2 = new JButton(new ImageIcon(url2));
		button2.setToolTipText("保存文件");
		JButton button3 = new JButton(new ImageIcon(url3));
		button3.setToolTipText("删除");
		JButton button4 = new JButton(new ImageIcon(url4));
		button4.setToolTipText("打印");

		JToolBar bar = new JToolBar();  //创建工具集
		bar.add(button1);  //添加图标按钮
		bar.add(button2);
		bar.addSeparator();  //添加分隔符
		bar.add(button3);
		bar.add(button4);
		bar.setFloatable(true);  //设置可浮动

		JFrame frame = new JFrame("工具栏使用示例");
		frame.add(bar,BorderLayout.NORTH);
		frame.setSize(300,300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

分割式面板JSplitPane

  1. import javax.swing.JFrame;  
  2. import javax.swing.JSplitPane;  
  3. /** 分割式面板的使用示例 */  
  4. public class JSplitPaneTest {  
  5.     public static void main(String[] args) {  
  6.         JFrame frame = new JFrame("分割式面板的使用示例");  
  7.         frame.setBounds(200,300,400,300);  
  8.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  9.         //第一个参数指定了分隔的方向,另外两个参数是放置在该分隔窗格的组件  
  10.         JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,new JPanel(),new JPanel());  
  11.   
  12.         //设置分隔器是否显示用来展开/折叠分隔器的空间  
  13.         splitPane.setOneTouchExpandable(true);  
  14.         //设置分隔器的大小,单位为像素  
  15.         splitPane.setDeviderSize(8);  
  16.         //将分隔式面板添加到容器中  
  17.         frame.add(splitPane);  
  18.         frame.setVisible(true);  
  19.   
  20.         //设置分隔器的位置,可以用整数(像素)或百分比来制定  
  21.         //用百分比时,需要在JSplitPane为可见后设置才起效  
  22.         splitPane.setDeviderLocation(0.5);  
  23.     }  
  24. }  
import javax.swing.JFrame;
import javax.swing.JSplitPane;
/** 分割式面板的使用示例 */
public class JSplitPaneTest {
	public static void main(String[] args) {
		JFrame frame = new JFrame("分割式面板的使用示例");
		frame.setBounds(200,300,400,300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//第一个参数指定了分隔的方向,另外两个参数是放置在该分隔窗格的组件
		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,new JPanel(),new JPanel());

		//设置分隔器是否显示用来展开/折叠分隔器的空间
		splitPane.setOneTouchExpandable(true);
		//设置分隔器的大小,单位为像素
		splitPane.setDeviderSize(8);
		//将分隔式面板添加到容器中
		frame.add(splitPane);
		frame.setVisible(true);

		//设置分隔器的位置,可以用整数(像素)或百分比来制定
		//用百分比时,需要在JSplitPane为可见后设置才起效
		splitPane.setDeviderLocation(0.5);
	}
}

选项卡面板JTabbedPane

  1. import java.net.URL;  
  2. import javax.swing.JFrame;  
  3. import javax.swing.JPanel;  
  4. import javax.swing.JTabbedPane;  
  5. /** 选项卡面板的使用示例 */  
  6. public class JTabbedPaneTest {  
  7.     public static void main(String[] args) {  
  8.         ClassLoader loader = Thread.currentThread().getContextClassLoader();  
  9.         URL iconURL1 = loader.getResource("newclass_wiz.gif");  
  10.         URL iconURL2 = loader.getResource("save_edit.gif");  
  11.           
  12.         //创建选项卡面板,默认把选项卡放在上部  
  13.         JTabbedPane tabPane = new JTabbedPane();  
  14.         //创建一个StockPanel面板并添加到选项窗格,并指定图标  
  15.         tabPane.addTab("选项卡1",new ImageIcon(iconURL1),new JPanel());  
  16.         tabPane.addTab("选项卡2",new ImageIcon(iconURL2),new JPanel());  
  17.         //创建一个SaledPanel面板并添加到选项窗格  
  18.         tabPane.addTab("选项卡3",new JPanel());  
  19.         //设置所选择的此选项卡窗格的索引  
  20.         tabPane.setSelectedIndex(1);  
  21.           
  22.         JFrame frame = new JFrame("选项卡面板的使用示例");  
  23.         frame.setBounds(200,300,400,300);  
  24.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  25.         //将选项窗格放置在面板中  
  26.         frame.add(tabPane);  
  27.         frame.setVisible(true);  
  28.     }  
  29. }  
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
/** 选项卡面板的使用示例 */
public class JTabbedPaneTest {
    public static void main(String[] args) {
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        URL iconURL1 = loader.getResource("newclass_wiz.gif");
        URL iconURL2 = loader.getResource("save_edit.gif");
        
        //创建选项卡面板,默认把选项卡放在上部
        JTabbedPane tabPane = new JTabbedPane();
        //创建一个StockPanel面板并添加到选项窗格,并指定图标
        tabPane.addTab("选项卡1",new ImageIcon(iconURL1),new JPanel());
        tabPane.addTab("选项卡2",new ImageIcon(iconURL2),new JPanel());
        //创建一个SaledPanel面板并添加到选项窗格
        tabPane.addTab("选项卡3",new JPanel());
        //设置所选择的此选项卡窗格的索引
        tabPane.setSelectedIndex(1);
        
        JFrame frame = new JFrame("选项卡面板的使用示例");
        frame.setBounds(200,300,400,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //将选项窗格放置在面板中
        frame.add(tabPane);
        frame.setVisible(true);
    }
}


12.2.3  专用容器

内部框架JInternalFrame

  1. import javax.swing.JInternalFrame;  
  2. import javax.swing.JDesktopPane;  
  3. import javax.swing.JPanel;  
  4. /** 内部框架使用示例 */  
  5. public class JInternalFrameTest {  
  6.     public static void main(String[] args) {  
  7.         //创建多文档面板  
  8.         JDesktopPane desktopPane = new JDesktopPane();  
  9.           
  10.         //创建第一个内部框架  
  11.         JInternalFrame interFrame = new JInternalFrame("内部框架1"true,true,true,true);  
  12.         interFrame.setBounds(10,10,200,200);  
  13.         interFrame.setVisible(true);  
  14.         //添加到多文档面板中  
  15.         desktopPane.add(interFrame);  
  16.         //创建第二个内部框架  
  17.         JInternalFrame interFrame2 = new JInternalFrame("内部框架2"true,true,true,true);  
  18.         interFrame2.setBounds(150,50,200,200);  
  19.         interFrame2.setVisible(true);  
  20.         desktopPane.add(interFrame2);  
  21.           
  22.         JFrame frame = new JFrame("内部框架使用示例");  
  23.         frame.setBounds(200,300,400,300);  
  24.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  25.         //将多文档面板放置在面板中央位置  
  26.         frame.add(desktopPane);  
  27.         frame.setVisible(true);  
  28.     }  
  29. }  
import javax.swing.JInternalFrame;
import javax.swing.JDesktopPane;
import javax.swing.JPanel;
/** 内部框架使用示例 */
public class JInternalFrameTest {
    public static void main(String[] args) {
        //创建多文档面板
        JDesktopPane desktopPane = new JDesktopPane();
        
        //创建第一个内部框架
        JInternalFrame interFrame = new JInternalFrame("内部框架1",true,true,true,true);
        interFrame.setBounds(10,10,200,200);
        interFrame.setVisible(true);
        //添加到多文档面板中
        desktopPane.add(interFrame);
        //创建第二个内部框架
        JInternalFrame interFrame2 = new JInternalFrame("内部框架2",true,true,true,true);
        interFrame2.setBounds(150,50,200,200);
        interFrame2.setVisible(true);
        desktopPane.add(interFrame2);
        
        JFrame frame = new JFrame("内部框架使用示例");
        frame.setBounds(200,300,400,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //将多文档面板放置在面板中央位置
        frame.add(desktopPane);
        frame.setVisible(true);
    }
}


12.3  


12.4  Swing组件


12.4.2  按钮


常规按钮JButton

  1. JButton btn = new JButton("提交");  //按钮  
  2. btn.setBounds(50,420,60,26);  //移动组件并调整大小  
  3. panel.add(btn);  //添加到面板  
JButton btn = new JButton("提交");  //按钮
btn.setBounds(50,420,60,26);  //移动组件并调整大小
panel.add(btn);  //添加到面板

复选框JCheckBox

  1. JCheckBox hobbyChk1 = new JCheckBox("睡觉");  
  2. hobbyChk1.setBounds(80,170,60,26);  
  3. panel.add(hobbyChk1);  //添加到面板中  
  4. JCheckBox hobbyChk2 = new JCheckBox("运动"true);  
  5. hobbyChk2.setBounds(150,170,60,26);  
  6. panel.add(hobbyChk2);  
  7. JCheckBox hobbyChk3 = new JCheckBox("爬山");  
  8. hobbyChk3.setBounds(220,170,60,26);  
  9. panel.add(hobbyChk3);  
JCheckBox hobbyChk1 = new JCheckBox("睡觉");
hobbyChk1.setBounds(80,170,60,26);
panel.add(hobbyChk1);  //添加到面板中
JCheckBox hobbyChk2 = new JCheckBox("运动",true);
hobbyChk2.setBounds(150,170,60,26);
panel.add(hobbyChk2);
JCheckBox hobbyChk3 = new JCheckBox("爬山");
hobbyChk3.setBounds(220,170,60,26);
panel.add(hobbyChk3);

单选按钮JRadioButton

  1. ButtonGroup group = new ButtonGroup();  //按钮组  
  2. JRadioButton fRdo = new JRadioButton("男",true);  //创建一个单选按钮,默认为选中  
  3. fRdo.setBounds(80,110,50,26);  //移动组件并调整其大小  
  4. group.add(fRdo);  //添加到按钮组  
  5. JRadioButton mRdo = new JRadioButton("女",false);  //第二个单选按钮  
  6. group.add(mRdo);  
ButtonGroup group = new ButtonGroup();  //按钮组
JRadioButton fRdo = new JRadioButton("男",true);  //创建一个单选按钮,默认为选中
fRdo.setBounds(80,110,50,26);  //移动组件并调整其大小
group.add(fRdo);  //添加到按钮组
JRadioButton mRdo = new JRadioButton("女",false);  //第二个单选按钮
group.add(mRdo);


12.4.3  文本组件

文本字段JTextField

  1. JTextField nameTxt = new JTextField();  
  2. nameTxt.setBounds(80,50,120,26);  
  3. panel.add(nameTxt);  
JTextField nameTxt = new JTextField();
nameTxt.setBounds(80,50,120,26);
panel.add(nameTxt);

密码框JPasswordField

  1. JPasswordField pwd = new JPasswordField();  
  2. pwd.setEchoChar('#');  //设置回显字符  
  3. pwd.setBounds(80,80,120,26);  
  4. panel.add(pwd);  
JPasswordField pwd = new JPasswordField();
pwd.setEchoChar('#');  //设置回显字符
pwd.setBounds(80,80,120,26);
panel.add(pwd);


12.5  布局管理器

每个容器都有一个布局管理器,默认布局管理器的层次关系:

BorderLayout:Window、Frame、Dialog、JFrame、JDialog

FlowLayout:JPanel


12.5.1  FlowLayout

  1. import java.awt  
  2. import javax.swing.  
  3. /** FlowLayout 布局管理器 */  
  4. public class FlowLayoutTest {  
  5.     public static void main(String[] args) {  
  6.         JFrame f = new JFrame("FlowLayout布局管理器使用示例");  
  7.         f.setBounds(300,300,400,300);  
  8.         JPanel p = new JPanel();  //Panel类  
  9.         p.setBackground(Color.ORANGE);  //Panel为橘黄色  
  10.         p.setLayout(new FlowLayout());  
  11.         p.add(new JButton("按钮1"));  //在面板上加入5个按钮  
  12.         p.add(new JButton("按钮2"));  
  13.         p.add(new JButton("按钮3"));  
  14.         p.add(new JButton("按钮4"));  
  15.         p.add(new JButton("按钮5"));  
  16.         f.add(p);  //将面板添加到窗体上  
  17.         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  18.         f.setVisible(true);  //显示窗体  
  19.     }  
  20. }  
import java.awt
import javax.swing.
/** FlowLayout 布局管理器 */
public class FlowLayoutTest {
    public static void main(String[] args) {
        JFrame f = new JFrame("FlowLayout布局管理器使用示例");
        f.setBounds(300,300,400,300);
        JPanel p = new JPanel();  //Panel类
        p.setBackground(Color.ORANGE);  //Panel为橘黄色
        p.setLayout(new FlowLayout());
        p.add(new JButton("按钮1"));  //在面板上加入5个按钮
        p.add(new JButton("按钮2"));
        p.add(new JButton("按钮3"));
        p.add(new JButton("按钮4"));
        p.add(new JButton("按钮5"));
        f.add(p);  //将面板添加到窗体上
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);  //显示窗体
    }
}


12.5.2  BorderLayout

  1. import java.awt  
  2. import javax.swing  
  3. /** BorderLayout使用示例 */  
  4. public class BorderLayoutTest {  
  5.     public static void main(String[] args) {  
  6.         //创建一个顶层容器窗口  
  7.         JFrame frame = new JFrame();  
  8.         frame.setBounds(200,120,300,300);  
  9.         frame.setTitle("BorderLayout的示例");  
  10.         //设置为边框布局管理器(JFrame默认就是边框布局管理器)  
  11.         BorderLayout borderLayout = new BorderLayout(10,10);  
  12.         frame.setLayout(borderLayout);  
  13.         //Panel默认的布局管理器是流式布局管理器  
  14.         JPanel cPanel = new JPanel();  
  15.         cPanel.setBackground(Color.RED);  
  16.         cPanel.add(new JButton("中间1"));  
  17.         cPanel.add(new JButton("中间2"));  
  18.         cPanel.add(new JButton("中间3"));  
  19.         frame.add(cPanel,BorderLayout.CENTER);  
  20.         frame.add(new JButton("北"),BorderLayout.NORTH);  
  21.         frame.add(new JButton("南"),BorderLayout.SOUTH);  
  22.         frame.add(new JButton("东"),BorderLayout.EAST);  
  23.         frame.add(new JButton("西"),BorderLayout.WEST);  
  24.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  25.         frame.setVisible(true);  
  26.     }  
  27. }  
import java.awt
import javax.swing
/** BorderLayout使用示例 */
public class BorderLayoutTest {
    public static void main(String[] args) {
        //创建一个顶层容器窗口
        JFrame frame = new JFrame();
        frame.setBounds(200,120,300,300);
        frame.setTitle("BorderLayout的示例");
        //设置为边框布局管理器(JFrame默认就是边框布局管理器)
        BorderLayout borderLayout = new BorderLayout(10,10);
        frame.setLayout(borderLayout);
        //Panel默认的布局管理器是流式布局管理器
        JPanel cPanel = new JPanel();
        cPanel.setBackground(Color.RED);
        cPanel.add(new JButton("中间1"));
        cPanel.add(new JButton("中间2"));
        cPanel.add(new JButton("中间3"));
        frame.add(cPanel,BorderLayout.CENTER);
        frame.add(new JButton("北"),BorderLayout.NORTH);
        frame.add(new JButton("南"),BorderLayout.SOUTH);
        frame.add(new JButton("东"),BorderLayout.EAST);
        frame.add(new JButton("西"),BorderLayout.WEST);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值