JavaSE12—窗体程序开发(上)
1. JFrame窗体
JFrame类定义了生成窗体的模板,每实例化一个窗体类,就产生了一个窗体。创建窗体后,可以像窗体添加组件,同时为组件添加时间监听器,处理一些最大化,最小化,关闭,调整大小等窗体事件。
定义自己的窗体,最常用的方法就是继承JFrame类并扩展为自己的窗体类,这个扩展的窗体类应该定义好窗体的界面和事件监听以及所有业务处理方法。
JFrame构造方法有以下两种:
public JFrame()
默认构造方法,这种构造方法创建了一个初始不可见,没有标题的新窗口。
public JFrame(String title)
创建一个不可见,具有标题的窗体,窗体的标题为创建窗体给定的String类型的参数。
自定义窗体对象的实例:
2. 为窗体添加面板
窗体作为容器,单独的时候是没有意义的,应该向窗体中添加各种组件。而面板也是一个Swing容器,可容纳其他组件,面板不能像窗体一样单独使用,必须添加到其他容器才能使用。
1) JPanel面板的应用
JPanel面板可以聚集一些组件进行布局,读者首先应该明确的是面板也是一种容器,因为它也继承自java.awt.Container类
JPanel组件作为容器类,除了可以添加组件之外,也可以设置布局管理器,将面板中的组件布局。
实例:在项目中创建JPanelTest类,该类继承JFrame类成为窗体组件,在该类中创建4个JPanel面板组件,并且将它们添加到窗体中。
JScrollPane面板是带滚动条的面板,JScrollPane也是一种容器,但是常用于不知单个组件,并且不可以使用布局管理器。如果需要在JScrollPane中放置多个组件,需要将多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JScrollPane组件上。
实例:创建窗体,在窗体中添加带滚动条的面板,并在面板中添加文本域组件。
3) 分割面板
分割面板可以将所在的区域分割成两部分,分开的部分中间有一条分割条分割,可以通过调整分割条的位置来改变这两部分的相对大小,用户可以根据需要进行调整,并且分隔条两侧的每一部分中还可以再放分割面板,实现分割面板的嵌套使用。
创建分割面板:
使用javax.swing.JSplitPane类创建的对象是一个分割面板,该类常用的构造方法如下:
JSplitPane()
JSplitPane(int orient)
JSplitPane(int orient,Component leftC,Component rigthC)
在JSplitPane中包含orient参数:
HORIZONTAL_SPLIT 表示水平方向进行分割
VEWTICAL_SPLIT 表示垂直方向上对分割面板进行分割。
例如:
JSplitPane jspane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
实例:
创建窗体,在该类中创建一个水平分割面板和一个垂直分割面板,并在水平分割面板的左侧和垂直分割面板的上面和下面个放一个标签,然后把垂直分割面板放到水平分割面板的右侧,设置水平分割面板的分割条显示UI小部件。
4) 选项卡面板
选项卡面板可以在窗体中放置多个标签页,每个标签页相当于一个与此选项卡大小相同的容器,在每个标签页中都可以放置一个或多个组件,使每个标签页实现不同页面的效果。javax.swing.JTabbedPane类课创建一个选项卡。
该类的构造方法:
JTabbedPane()
JTabbedPane(int tabPlace)
JTabbedPane(int tabPlace,int tabLayout)
参数tabPlace用于指定选项卡标签显示位置的字段,参数tabLayout指定选项卡面板标签布局的字段。
JTabbedPane类的常用方法见API
实例:创建窗体,在窗体中添加选项卡面板,在第一个选项卡面板中添加一个按钮;在第二个选项卡面板添加复选框;在第三个选项卡面板中添加文本域;在第四个选项卡面板中添加单选按钮。
1. JFrame窗体
JFrame类定义了生成窗体的模板,每实例化一个窗体类,就产生了一个窗体。创建窗体后,可以像窗体添加组件,同时为组件添加时间监听器,处理一些最大化,最小化,关闭,调整大小等窗体事件。
定义自己的窗体,最常用的方法就是继承JFrame类并扩展为自己的窗体类,这个扩展的窗体类应该定义好窗体的界面和事件监听以及所有业务处理方法。
JFrame构造方法有以下两种:
public JFrame()
默认构造方法,这种构造方法创建了一个初始不可见,没有标题的新窗口。
public JFrame(String title)
创建一个不可见,具有标题的窗体,窗体的标题为创建窗体给定的String类型的参数。
自定义窗体对象的实例:
import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; public class DemoFrame extends JFrame { public static void main(String[] args){ EventQueue.invokeLater(new Runnable(){ public void run(){ try{ DemoFrame frame = new DemoFrame(); frame.setVisible(true); }catch(Exception e){ e.printStackTrace(); } } }); } public DemoFrame(){ super(); setTitle("JFrameTest"); setBounds(100,100,267,118); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel(); label.setText("Hello world"); getContentPane().add(label,BorderLayout.CENTER); } }
2. 为窗体添加面板
窗体作为容器,单独的时候是没有意义的,应该向窗体中添加各种组件。而面板也是一个Swing容器,可容纳其他组件,面板不能像窗体一样单独使用,必须添加到其他容器才能使用。
1) JPanel面板的应用
JPanel面板可以聚集一些组件进行布局,读者首先应该明确的是面板也是一种容器,因为它也继承自java.awt.Container类
JPanel组件作为容器类,除了可以添加组件之外,也可以设置布局管理器,将面板中的组件布局。
实例:在项目中创建JPanelTest类,该类继承JFrame类成为窗体组件,在该类中创建4个JPanel面板组件,并且将它们添加到窗体中。
import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class JPanelDemo extends JFrame { public JPanelDemo(){ Container c = getContentPane(); c.setLayout(new GridLayout(2,2,2,2));//将容器设置成两行两列 JPanel p1 = new JPanel(new BorderLayout()); JPanel p2 = new JPanel(new BorderLayout()); JPanel p3 = new JPanel(new BorderLayout()); JPanel p4 = new JPanel(new BorderLayout()); p1.add(new JButton("p1")); p2.add(new JButton("p2")); p3.add(new JButton("p3")); p4.add(new JButton("p4")); c.add(p1); c.add(p2); c.add(p3); c.add(p4); setVisible(true); setBounds(100,100,400,300); pack(); } public static void main(String[] args){ new JPanelDemo(); } }2) JScrollPane面板
JScrollPane面板是带滚动条的面板,JScrollPane也是一种容器,但是常用于不知单个组件,并且不可以使用布局管理器。如果需要在JScrollPane中放置多个组件,需要将多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JScrollPane组件上。
实例:创建窗体,在窗体中添加带滚动条的面板,并在面板中添加文本域组件。
import java.awt.Color; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.WindowConstants; public class JScrollPaneDemo extends JFrame{ public JScrollPaneDemo(){ Container c = getContentPane(); JTextArea jta = new JTextArea(20,50); JScrollPane jspane = new JScrollPane(jta); c.add(jspane); setTitle("Hello Text"); setSize(200,200); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args){ new JScrollPaneDemo(); } }
3) 分割面板
分割面板可以将所在的区域分割成两部分,分开的部分中间有一条分割条分割,可以通过调整分割条的位置来改变这两部分的相对大小,用户可以根据需要进行调整,并且分隔条两侧的每一部分中还可以再放分割面板,实现分割面板的嵌套使用。
创建分割面板:
使用javax.swing.JSplitPane类创建的对象是一个分割面板,该类常用的构造方法如下:
JSplitPane()
JSplitPane(int orient)
JSplitPane(int orient,Component leftC,Component rigthC)
在JSplitPane中包含orient参数:
HORIZONTAL_SPLIT 表示水平方向进行分割
VEWTICAL_SPLIT 表示垂直方向上对分割面板进行分割。
例如:
JSplitPane jspane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
实例:
创建窗体,在该类中创建一个水平分割面板和一个垂直分割面板,并在水平分割面板的左侧和垂直分割面板的上面和下面个放一个标签,然后把垂直分割面板放到水平分割面板的右侧,设置水平分割面板的分割条显示UI小部件。
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSplitPane; public class SplitPaneFrameDemo extends JFrame{ public SplitPaneFrameDemo(){ setTitle("USE SPLITPANE"); setBounds(100,100,200,160); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JSplitPane hSplitPane = new JSplitPane(); JButton labelLeft = new JButton("LEFT"); final JSplitPane vSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); JLabel labelTop = new JLabel("TOP"); JLabel labelBottom = new JLabel("BOTTOM"); vSplitPane.setTopComponent(labelTop); vSplitPane.setBottomComponent(labelBottom); vSplitPane.setDividerLocation(40); hSplitPane.setLeftComponent(labelLeft); hSplitPane.setRightComponent(vSplitPane); hSplitPane.setDividerLocation(40); hSplitPane.setOneTouchExpandable(true);//分隔条小部件 getContentPane().add(hSplitPane); } public static void main(String[] args){ SplitPaneFrameDemo splitPaneFrame = new SplitPaneFrameDemo(); splitPaneFrame.setVisible(true); } }
4) 选项卡面板
选项卡面板可以在窗体中放置多个标签页,每个标签页相当于一个与此选项卡大小相同的容器,在每个标签页中都可以放置一个或多个组件,使每个标签页实现不同页面的效果。javax.swing.JTabbedPane类课创建一个选项卡。
该类的构造方法:
JTabbedPane()
JTabbedPane(int tabPlace)
JTabbedPane(int tabPlace,int tabLayout)
参数tabPlace用于指定选项卡标签显示位置的字段,参数tabLayout指定选项卡面板标签布局的字段。
JTabbedPane类的常用方法见API
实例:创建窗体,在窗体中添加选项卡面板,在第一个选项卡面板中添加一个按钮;在第二个选项卡面板添加复选框;在第三个选项卡面板中添加文本域;在第四个选项卡面板中添加单选按钮。
package qijia.si; import java.awt.BorderLayout; import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JRadioButton; import javax.swing.JTabbedPane; import javax.swing.JTextArea; public class JTabblePaneDemo extends JFrame{ public JTabblePaneDemo(){ super(); setTitle("JTabblePaneTEST"); setBounds(100,100,220,180); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JTabbedPane tabbedPane = new JTabbedPane(); final JButton button = new JButton("Press me"); URL url1 = JTabblePaneDemo.class.getResource("1.gif"); Icon icon1 = new ImageIcon(url1); tabbedPane.addTab("选项卡一", icon1,button,"这里使用了按钮"); final JCheckBox checkBox = new JCheckBox("复选框"); tabbedPane.addTab("选项卡二",null,checkBox,null); URL url2 = JTabblePaneDemo.class.getResource("2.gif"); Icon icon2 = new ImageIcon(url2); tabbedPane.setIconAt(1, icon2); JTextArea textArea = new JTextArea("文本域"); URL url3 = JTabblePaneDemo.class.getResource("3.gif"); Icon icon3 = new ImageIcon(url3); tabbedPane.addTab("选项卡三", icon3,textArea,null); tabbedPane.setToolTipTextAt(2, "这是文本域"); final JRadioButton radioButton = new JRadioButton("单选按钮"); URL url4 = JTabblePaneDemo.class.getResource("4.gif"); Icon icon4 = new ImageIcon(url4); tabbedPane.addTab("选项卡四", icon4,radioButton,null); getContentPane().add(tabbedPane,BorderLayout.CENTER); } public static void main(String[] args) { JTabblePaneDemo tabbedPaneFrame = new JTabblePaneDemo(); tabbedPaneFrame.setVisible(true); } }
发表评论
-
JavaSE20—绘图
2011-05-18 20:10 1506JavaSE20—绘图 1. 绘制图形 Graphics类是 ... -
JavaSE19—Swing高级控件(下)
2011-05-15 17:28 1090JavaSE19—Swing高级控件(下) 1. 工具栏与对话 ... -
JavaSE18—Swing高级控件(上)
2011-05-12 22:22 1499JavaSE18—Swing高级控件(上) 1. 为窗体添加 ... -
JavaSE17—GUI事件
2011-05-08 20:52 1044JavaSE17—GUI事件处理机 ... -
JavaSE15—多线程
2011-05-03 19:10 830JavaSE15—多线程 1. 多线程简介 程序:程序是计算 ... -
JavaSE14—窗体程序开发(下)
2011-05-01 16:55 971JavaSE14—窗体程序开发(下) 1. 基础组件(续) ... -
JavaSE13—窗体程序开发(中)
2011-05-01 16:53 1133JavaSE13—窗体程序开发(中) 1、 布局方式 1) ... -
JavaSE11—网络编程初步
2011-04-29 16:58 943JavaSE11—网络编程初步 1. 背景知识 1) 端口 ... -
JavaSE 10 —IO流
2011-04-28 20:00 865JavaSE 10 —IO流 1.IO流简介 Java的输入 ... -
JavaSE09—Java类集框架
2011-04-26 19:32 838JavaSE09—Java类集框架 1. 类集接口 接口: ... -
JavaSE08—包,访问权限及异常处理
2011-04-26 19:31 634JavaSE08—包,访问权限 ... -
JavaSE07—Java常用类库
2011-04-26 19:30 630JavaSE07—Java常用类库 1. String类和S ... -
JavaSE06—类的其他问题
2011-04-26 19:28 671JavaSE06—类的其他问题 1. Objec ... -
JavaSE05—抽象类与接口
2011-04-26 19:27 621JavaSE05—抽象类与接口 1. ... -
JavaSE04—类的封装,继承与多态
2011-04-26 19:26 688JavaSE04—类的封装,继 ... -
JavaSE03—类和对象
2011-04-26 19:24 628JavaSE03—类和对象 1. ... -
Java SE02——数组
2011-04-26 19:23 631Java SE02——数组 1. 数组的声 ... -
Java SE01——原生数据类型
2011-04-26 19:18 833Java SE01——原生数据类型 1.Java中的数据类 ...
相关推荐
《JavaSE应用程序设计》,作者:张利国、刘伟,北京科海电子出版社
由gui编程,javase技术开发的随机点名程序,适用于班级点名!
这个文件里的内容适合Java初学者,这是一些关乎JavaSE面向程序的相关知识以及一些Java的基础使用规则、类的定义规则、方法的定义方式等等。这也是小编在刚开学学习JavaSE时记录的一些笔记,里面的内容非常适合JavaSE...
JavaSE笔试程序题(20180307)JavaSE笔试程序题(20180307)
基于javase的网上商城例子程序
一个基于JavaSe的超市管理系统,简单的桌面应用程序,有数据库建库源码
java API官方下载的文档,为Java SE Development Kit 10.0.1 Documentation,html格式
java基础学习的例子,耐心的看每个例子,大家肯定受益非浅
java初学者可以看看,第一个小项目ATM的实现,代码注释非常详细,很有成就感。
三年JavaEE开发积累的那些代码之一:JavaSE篇 有什么? 1)自己写的例子:或是为了项目中应用写的demo,或是为了学习某项技术写的demo。 2)网上下载的例子:或改过或没改过,或完善过或原封没动。 没什么? 1)公司...
JavaSE技术题Java开发过程中的面试
JavaSE基本知识 适合新手入门 JavaSE基本知识 适合新手入门 JavaSE基本知识 适合新手入门
javaSE
这是北京科海出版的JavaSE应用程序设计一书的配套源码。 由张利国和刘伟主讲,适合Java初学者学习。
测试javase的程序包, 里面有一个文档描述了测试代码
自己写的课程设计 javaSE 实现石头剪刀布(带窗体界面)
图形界面程序的分页程序封装,拿到任何程序都能用,只要你需要分页!!!!!
javase开发的多线程聊天室 ,每位用户独立享有socket,保证聊天速度
JavaSE开发随堂笔记