15、swing用户界面组件
发布时间:2024-11-08
发布时间:2024-11-08
J2SE
第十四讲Swing用户界面组件
J2SE
目标 了解 Swing 的结构 了解 Swing GUI 的容器 掌握Jframe 和Jpanel的使用 掌握用户界面组件的使用方法 掌握常用Swing布局管理器的使用
J2SE
Swing 结构ObjectComponent Container JText
JComboBoxJLabel JList JMenuBar Window JComponent JOptionPane JPanel
FrameJFrame
DialogJScrollBar JDialog AbstractButton
JToggleButtonJCheckBox JRadioButton
JMenuItemJMenu
JButton3
J2SE
文本组件 JtextComponent 是所有 Swing 文本组件的根类JTextField JTextArea JTextComponent JEditorPane JTextPane
JPasswordField 1. 2. 3. Javax.swing.text.JtextComponent类的常用方法: void setText(String t) //改变一个文本组件中的文本 String getText() //返回一个文本组件中的文本 void setEditable(boolean b) //决定用户能否编辑文本组件的内容4
J2SE
文本框JTextField(1) JTextField 组件允许输入或编辑单行文本 此类的构造函数包括: – JTextField() – JTextField(Document doc, String text, int columns) – JTextField(int columns) //建立一个指定列宽度的空白文本框 – JTextField(String text) //建立一个带有初始文本的文本框 – JTextField(String text, int columns) 把文本框添加到窗口的通常办法是把它先添加到面板或者其它容器中。示 例:……
Container con = getContentPane(); con. setLayout(new FlowLayout()); JLabel jl = new JLabel(“文本域”); con.add(jl); JTextField tf = new JTextField(20); con.add(tf);……5
J2SE
文本框JTextField(2)
在实践中,应该把文本框的最大列宽多设1到2个字符。输入文本的 长度可以超过最大列宽,这时文本框就会卷动。 如果你需要在运行时重新设置列宽,应联合使用setColumns方法和 包含该文本框的容器的validate方法。 textFiled. setColumns(10); panel. validate();//布局管理器重新绘制容器 可以在任何时候改变文本框的内容: textFiled. setText(“hello!”); 获取文本框中的内容并去掉前后空格: textFiled. getText(). trim(); int add1 = Integer.parseInt(textFiled. getText(). trim());
J2SE
文本框JTextField(3) 所有文本组件的模型都由Document接口说明,这既包括无格式的文本, 也包括格式化的文本(如html)。当数据改变后,可以要求文档(而非文 本组件)通知你,这需要安装一个文档监听器: //新建文档监听器 DocumentListener resultListener = new ResultListener(); ... //为第一个文本域安装一个文档监听器 originText.getDocument().addDocumentListener(resultListe ner); //当文本发生改变后,下面三个方法之一会被调用: void insertUpdate(DocumentEvent e) void removeUpdate(DocumentEvent e) void changedUpdate(DocumentEvent e) //改变格式时 你的文档监听器必须实现这三个方法
如果你使用一个动作监听
器的话,只有当用户按下ENTER键时, 该动作监听器才会得到通知。7
J2SE
文本框使用示例 获取两个文本框的输入并求和,然后显示在第三个文本 框中。 程序代码见TextFieldTest.java。运行结果如下:
初始状态
改变输入
J2SE
密码框JPasswordField 特殊的文本框。在密码框中输入时,用户的输入并不会 真正显示出来,而是显示回显字符,如“*”,以防止 被他人看见用户输入的密码。 构造函数:– JPasswordField(String text, int columns) 参数:text 显示的文本,如果没有则为null columns 列大小
其它方法– void setEchoChar(char echo) 设置密码框的回显字符。0表示设置为默认回显字符 – char[] getPassword() 返回包含在密码框中的文本。9
J2SE
密码框使用示例 将密码框的输入显示在文本框中 程序代码见PasswordFieldTest.java。运行结果如 下:
J2SE
文本区JTextArea 3-1 在一个文本区里,用户可以输入多行文本 它可实现可滚动界面 JTextArea 组件可使用下列构造函数创建: – JTextArea() – JTextArea(int rows, int cols)//建立一个指定行列的文本区 – JTextArea(String text)//建立一个带初始化文本的文本区 – JTextArea(String text, int rows, int cols) – JTextArea(Document doc) – JTextArea(Document doc, String text, int rows, int cols) 例: … JLabel jl = new JLabel(“文本区”); con.add(jl); JTextArea ta = new JTextArea(5,10); con.add(ta); …
J2SE
文本区JTextArea 3-2 多行文本之间的换行可以采用两种方式: 1)手动换行。即输入ENTER键,这将在文本中插入换行符“\n”。2)通过设置换行属性来避免手动换行,由文本区组件自动处理。 textArea. setLineWrap(true);//对长的行换行设置为真 但是这样的设置并没有真正在文本中插入换行符“\n”。 在Swing中,文本区没有滚动条。要给文本区增加滚动条,可以通过 把文本区插入到一个滚动窗格中。然后把该滚动窗格插入进内容窗格 中。 textArea =new JTextArea(8,40); JScrollPane scrollPane = new JScrollPane(textArea); contentPane. add(scrollPane, BorderLayout.CENTER);
在Swing中,给组件添加滚动条的通用处理方法是-----把组件添加进 一个滚动窗格中。滚动由滚动窗格内部处理,滚动条会自动出现或消 12 失
J2SE
文本区JTextArea 3-3 Javax.swing.JTextArea类的常用方法: Void setColumns(int cols) Void setRows(int rows Void append(String newText) 区文本的末尾 Void setLineWrap Void setTabSize(int c) 设置文本区的列数 把指定文本追加到文本 设置文本区的行数
打开或关闭换行 设置TAB键的列数为c
Javax.swing.JScrollPane类的构造函数 JScrollPane(Component c) 创建一个显示指定组件c 的滚动窗格。当组件内容超过显示范围时,滚动条会自 13 动出现
J2SE
文本区使用
示例 文本区的三种显示方式 程序代码见TextAreaTest.java。运行结果如下:
J2SE
标签JLabel 3-1 标签是容纳文本的组件。这种组件没有修饰(例如,没 有边界),它们也不响应用户输入。 标签常用来标识组件,如文本组件。给组件设置标签的 方法如下: 1. 使用正确的文本构造一个JLable组件 2. 把该标签组件放置到同需要标识的组件足够的地 方,这样用户能够看到该标签标识了哪个组件标签同任何其它组件一样,可以定位在一个容器中。你 可以把它放在你需要的地方15
J2SE
标签JLabel 3-2 它既可以显示文本也可以显示图像 构造函数如下:– JLabel(Icon icon)://使用左对齐图标来构造一个标签 – JLabel(String text )://使用左对齐字符串来构造一个标签 – JLabel(String text, int align)://使用字符串及指定的对齐方式来构造一 个标签 – JLabel(String text, Icon icon, int align)://同时使用字符串和图标及指 定的对齐方式来构造一个标签 参数:text表示使用的字符串; icon表示使用的图标; align表示水平对齐方式,其值可以为:SwingConstants.LEFT、 SwingConstants.RIGHT、SwingConstants.CENTER、 SwingConstants.NORTH、SwingConstants.EAST等
说明:JLable实现了SwingConstants接口,该接口定义了很多有用 的常量。SwingConstants.LEFT也可以写成JLable.LEFT16