JAVA自学-Swing用户界面组件
2015-02-01 09:20
357 查看
9.1 Swing和模型-视图-控制器设计模式
·模型必须实现改变内容和查找内容的方法;模型是完全不可见的,显示存储在模型中的数据是视图的工作;
·对于大多数组建,模型类实现了一个名字以Model结尾的接口;按钮实现了ButtonMode接口;
·模型不存储按钮标签或图标;仅凭模型无法知道它的外观
9.2布局管理器
·按钮放置在一个JPanel对象中,且用流布局管理器管理(默认布局管理器);组件放在容器中,布局管理器决定容器中的组件具体放置的位置和大小;
·边框布局会扩展所有·边框布局管理器是每个JFrame内容窗格的默认布局管理器;
····它允许为每个组件选择一个放置位置;边框组件的厚度不会随窗口大小改变而改变;
····边框组建会扩展所有组件尺寸以便填满可用空间,流布局管理器则维持每个组件的最佳尺寸;···创建边框按钮先创建一个JPanel对象,然后逐一将按钮添加到面板中;
·网格布局:每个单元大小都是一样的,缩放窗口,计算器按钮随之变大或变小,但所有按钮尺寸保持一致;
····构造器:panel.steLayout(new GridLayout(5,4)); ;void pack() 缩放窗口,将组件调整至最佳大小;
9.3文本输入
·文本域和文本区组件用于获取文本输入;文本域(JTextField)只能进行单行文本输入;文本区(JTextArea)能进行多行文本输入;;;JPassword也只能单行文本输入,但不会显示内容;
····三个类均继承于抽象类JTextComponent类,子类获取(get)、设置(set)文本的方法由超类JTextComponent提供;
9.3.1文本域
·把文本域添加到窗口:将文本域添加到面板或其他容器中,与添加按钮相同;构造器 JTextField textField=new JTextField("Default input",20); 用add方法添加,一个文本域,同时初始化,设置文本域宽度为20列(字符宽度);
····运行时重置列数用setColumns;然后运用revalidate方法重新布局:textField.setColums(10); panel.revalidate(); 此方法不是马上改变组件大小;重新计算需要调用validate方法;
····任意时候可以构造文本域使用setText方法,从JTextComponent中继承;将文本域前后空格删除调用trin方法:String text=textField.getText().trim(); ;改变显示文字字体,需要调用setFont方法;
9.3.2标签
·标签是容纳文本的组件,没有任何修饰(边缘),也不影响用户输入;
·可以用标签标识组件:构造一个JLabel组件→将标签组件放在距离需要标识的组件足够近的地方以便用户了解;
·JLabel的构造器允许指定初始文本和图标,也可以选择内容的排列方式;可以用SwingConstants接口中的常量来指定排列方式;
9.3.3密码域
·与常规文本域相同的模型来存储数据;视图改为回显字符
9.3.4文本区
·多行输入使用JTextArae组件来接收输入,每行以“\n”结尾;构造器:textArea=new JTextArea(8,40); 构造8行40列;
····可用setColumns改变列数;用setRows改变函数;;布局管理器会对文本区进行缩放;;;;过长可用自动换行来避免:textArea.setLineWrap(true); 此特性并未添加“\n”字符改变文本内容;
9.3.5滚动窗格
·将文本区插入到滚动窗格中 textArea=new JTextArea(8,40); JScrollPane scrollPane=new JScrollPane(textArea); 如果文本超过文本区,则滚动条将会自动的出现;
9.4选择组件
·复选框
····只接收输入“是”或“否”;复选框自动的带有标识标签;
········指定文本标签:bold = new JCheckBox("Bold"); ;选定或取消复选框:bold.setSelected(true);;方法isSelected返回每个复选框的状态;
·单选按钮
····为单选按钮组构建一个ButtonGroup的对象,将JRadioButton类对象添加到按钮中,在新按钮被按下时,取消前一个被按下的按钮;
·组合框
····文本域和预定的选项组合起来;JCmboBox类提供了组合框的组件;setEditable方法可让组合框成为可编辑状态;getselectedItem方法获取当前的选项或被编辑的文本;方法addItem增加选项;
·滑块
····构造滑块:JSlider slider = new JSlider(min,max,initialValue);默认为0、100和50;垂直滑块JSlider slider = new JSlider(SwingConstants.VERTICAL,min,max,initialValue);
····滑块滑动时,ChangeEvent会发送给所有有变化的监听器,需要调用addChangeListener方法并安装一个实现了ChangeListener接口的对象,用方法StateChanged获取滑块当前值;
9.5菜单
·创建菜单: JNenuBar nemuBar = new JMenuBar();;调用setJMenuBar方法将菜单栏添加到框架上;为每个菜单建立菜单对象: JMenu editMenu = new JMenu("Edit");然后将顶层菜单添加到菜单栏中;
·菜单项中的图标:可以利用JMenuItem(String,Icon)或者JMenuItem(Icon)构造一个图标,也可以用JMenuItem类的setIcon指定一个图标;
·复选框和单选按钮
·弹出菜单:弹出菜单没有标题 JPopupMenu popub = new JPopupMenu();;然后常规添加至菜单项;显示需要调用show方法菜单,调用时给出父组件和相对的父组件坐标的显示位置;
·快捷键:构造字母:JMenuItem aboutItem = new JMenuItem("About", 'A');;构造快捷键:JMenu helpMunu = new JMenu("Help); helpMenu.setMnemonic('H');;
·启动和禁用菜单项:调用setEnabled方法:saveItem.setEnabled(false);;
·工具栏:可以随处移动,可以将它拖拽到框架的四个边框上;JToolBar bar = new JToolBar(); bar.add(blueButton);;用Action对象填充工具栏:bar.add(blueAction;;
·工具提示:光标停留在按钮上,给与提示;Swing中调用setToolText方法将工具添加到JComponent上:exitButton.setToolTipText("Text");
9.6复杂布局管理器
·网格组布局:没有任何限制的网格布局:建立一个GridBagLayout对象→设置成组件的布局管理器→为每个组件建立一个GridBagConstraints对象→添加组件约束:add(component,constraints);;
····约束:1.gridx,gridy,gridwidth和gridheight:定义了组件在网格中的位置与所占行数和列数;
2.增量域:扩大某区域时自动扩充网格;
3.fill和anchor参数:不希望组件拉伸使用fill,组建没有填充整个区域可用anchor域指定位置;
4.填塞:外部填塞:通过设置insets域在组建周围的附加空白区域指定其位置;
内部填塞:通过设置ipadx和ipady确保组件不会收缩到最小尺寸之下;
5.使用帮助类来管理网格组约束:
P376
·模型必须实现改变内容和查找内容的方法;模型是完全不可见的,显示存储在模型中的数据是视图的工作;
·对于大多数组建,模型类实现了一个名字以Model结尾的接口;按钮实现了ButtonMode接口;
·模型不存储按钮标签或图标;仅凭模型无法知道它的外观
9.2布局管理器
·按钮放置在一个JPanel对象中,且用流布局管理器管理(默认布局管理器);组件放在容器中,布局管理器决定容器中的组件具体放置的位置和大小;
·边框布局会扩展所有·边框布局管理器是每个JFrame内容窗格的默认布局管理器;
····它允许为每个组件选择一个放置位置;边框组件的厚度不会随窗口大小改变而改变;
····边框组建会扩展所有组件尺寸以便填满可用空间,流布局管理器则维持每个组件的最佳尺寸;···创建边框按钮先创建一个JPanel对象,然后逐一将按钮添加到面板中;
·网格布局:每个单元大小都是一样的,缩放窗口,计算器按钮随之变大或变小,但所有按钮尺寸保持一致;
····构造器:panel.steLayout(new GridLayout(5,4)); ;void pack() 缩放窗口,将组件调整至最佳大小;
9.3文本输入
·文本域和文本区组件用于获取文本输入;文本域(JTextField)只能进行单行文本输入;文本区(JTextArea)能进行多行文本输入;;;JPassword也只能单行文本输入,但不会显示内容;
····三个类均继承于抽象类JTextComponent类,子类获取(get)、设置(set)文本的方法由超类JTextComponent提供;
9.3.1文本域
·把文本域添加到窗口:将文本域添加到面板或其他容器中,与添加按钮相同;构造器 JTextField textField=new JTextField("Default input",20); 用add方法添加,一个文本域,同时初始化,设置文本域宽度为20列(字符宽度);
····运行时重置列数用setColumns;然后运用revalidate方法重新布局:textField.setColums(10); panel.revalidate(); 此方法不是马上改变组件大小;重新计算需要调用validate方法;
····任意时候可以构造文本域使用setText方法,从JTextComponent中继承;将文本域前后空格删除调用trin方法:String text=textField.getText().trim(); ;改变显示文字字体,需要调用setFont方法;
9.3.2标签
·标签是容纳文本的组件,没有任何修饰(边缘),也不影响用户输入;
·可以用标签标识组件:构造一个JLabel组件→将标签组件放在距离需要标识的组件足够近的地方以便用户了解;
·JLabel的构造器允许指定初始文本和图标,也可以选择内容的排列方式;可以用SwingConstants接口中的常量来指定排列方式;
9.3.3密码域
·与常规文本域相同的模型来存储数据;视图改为回显字符
9.3.4文本区
·多行输入使用JTextArae组件来接收输入,每行以“\n”结尾;构造器:textArea=new JTextArea(8,40); 构造8行40列;
····可用setColumns改变列数;用setRows改变函数;;布局管理器会对文本区进行缩放;;;;过长可用自动换行来避免:textArea.setLineWrap(true); 此特性并未添加“\n”字符改变文本内容;
9.3.5滚动窗格
·将文本区插入到滚动窗格中 textArea=new JTextArea(8,40); JScrollPane scrollPane=new JScrollPane(textArea); 如果文本超过文本区,则滚动条将会自动的出现;
9.4选择组件
·复选框
····只接收输入“是”或“否”;复选框自动的带有标识标签;
········指定文本标签:bold = new JCheckBox("Bold"); ;选定或取消复选框:bold.setSelected(true);;方法isSelected返回每个复选框的状态;
·单选按钮
····为单选按钮组构建一个ButtonGroup的对象,将JRadioButton类对象添加到按钮中,在新按钮被按下时,取消前一个被按下的按钮;
·组合框
····文本域和预定的选项组合起来;JCmboBox类提供了组合框的组件;setEditable方法可让组合框成为可编辑状态;getselectedItem方法获取当前的选项或被编辑的文本;方法addItem增加选项;
·滑块
····构造滑块:JSlider slider = new JSlider(min,max,initialValue);默认为0、100和50;垂直滑块JSlider slider = new JSlider(SwingConstants.VERTICAL,min,max,initialValue);
····滑块滑动时,ChangeEvent会发送给所有有变化的监听器,需要调用addChangeListener方法并安装一个实现了ChangeListener接口的对象,用方法StateChanged获取滑块当前值;
9.5菜单
·创建菜单: JNenuBar nemuBar = new JMenuBar();;调用setJMenuBar方法将菜单栏添加到框架上;为每个菜单建立菜单对象: JMenu editMenu = new JMenu("Edit");然后将顶层菜单添加到菜单栏中;
·菜单项中的图标:可以利用JMenuItem(String,Icon)或者JMenuItem(Icon)构造一个图标,也可以用JMenuItem类的setIcon指定一个图标;
·复选框和单选按钮
·弹出菜单:弹出菜单没有标题 JPopupMenu popub = new JPopupMenu();;然后常规添加至菜单项;显示需要调用show方法菜单,调用时给出父组件和相对的父组件坐标的显示位置;
·快捷键:构造字母:JMenuItem aboutItem = new JMenuItem("About", 'A');;构造快捷键:JMenu helpMunu = new JMenu("Help); helpMenu.setMnemonic('H');;
·启动和禁用菜单项:调用setEnabled方法:saveItem.setEnabled(false);;
·工具栏:可以随处移动,可以将它拖拽到框架的四个边框上;JToolBar bar = new JToolBar(); bar.add(blueButton);;用Action对象填充工具栏:bar.add(blueAction;;
·工具提示:光标停留在按钮上,给与提示;Swing中调用setToolText方法将工具添加到JComponent上:exitButton.setToolTipText("Text");
9.6复杂布局管理器
·网格组布局:没有任何限制的网格布局:建立一个GridBagLayout对象→设置成组件的布局管理器→为每个组件建立一个GridBagConstraints对象→添加组件约束:add(component,constraints);;
····约束:1.gridx,gridy,gridwidth和gridheight:定义了组件在网格中的位置与所占行数和列数;
2.增量域:扩大某区域时自动扩充网格;
3.fill和anchor参数:不希望组件拉伸使用fill,组建没有填充整个区域可用anchor域指定位置;
4.填塞:外部填塞:通过设置insets域在组建周围的附加空白区域指定其位置;
内部填塞:通过设置ipadx和ipady确保组件不会收缩到最小尺寸之下;
5.使用帮助类来管理网格组约束:
P376
相关文章推荐
- 【Java Swing探索之路系列】之四:Java Swing用户界面组件(一)
- 自学Java之Java类库(在用户界面上排列组件)(011day)
- Java学习笔记--Swing用户界面组件
- Java自学004GUI组件与用户界面
- #javaGUI#基于swing包的java用户界面设置入门,组件篇
- #Java 核心技术卷一阅读笔记# 第十二章 Swing用户界面组件
- Java自学之路-Java基础教程-42:Java的UI界面AWT和Swing组件
- Java Swing组件类型
- Java - Swing用户界面设计(5)
- Java - Swing用户界面设计(6)
- 清华大学计算中心培训部-技术分享:Java中Jlist的Swing组件
- java swing 组件
- JAVA SWING 组件显示
- SWING常识1:Java Swing组件的特点
- Java:简单的Swing用户界面和监听按钮点击事件
- java swing 组件大全----测试Swing所有组件及其相应的事件
- 关于 java swing组件加背景图片的问题
- Java - Swing用户界面设计(4)
- [Java] Swing系列-组件对齐方式的学习
- Java Swing 组件全演示