附加的swing小部件(下)

JOptionPane

JOptionPane 是在 Swing中类似“快捷方式”的东西。通常,作为UI开发人员,您需要向用户呈现快速信息,让用户了解错误和信息。甚至可能想得到一些快速数据,例如名称或数字。在Swing中,JOptionPane 类为这些东西提供了快捷方式,但这并不是它必须完成的任务。不需要让每个开发人员重头开始重复相同的工作,Swing已经提供了这个基本的但很有用的类,为UI开发人员提供了获取和接收简单消息的简易方法。

使用 JOptionPane时有点麻烦的是可以使用的全部选项。虽然简单,但是它仍然提供了大量选项,这些选项有可能造成混淆。学习JOptionPane的最好方法就是使用它;编写代码,观察弹出的是什么。这个组件几乎可以让您修改它的每一方面:帧标题、消息本身、显示的图标、按钮选项,以及是否需要文本响应。因为有太多的可能性,无法在本教程中一一列举它们,所以您最好是访问JOptionPane的API页面,查看它的众多可能性。

JTextArea

JTextArea 比JTextField更进了一步。JTextField被局限在一行文本中,而JTextArea扩展了这个能力,支持多行文本。可以把它想像成一个空白页,您可以在其中的任意地方进行输入。正如您可能猜到的,JTextArea包含许多与JTextField相同的功能,毕竟,它们实际上是相同的组件。但是JTextArea提供了一些额外的重要功能,可以把它区别开。这些功能包括单词自动换行的能力(即把长文本自动换行到下一行,而不是将单词从中断开)、对文本自动换行的能力(即把长的文本行移动到下一行,而不是创建一个需要水平滚动条的非常长的行)。

支持行和单词的自动换行的重要方法是:

· is/setLineWrap():设置在行过长的时候是否要自动换行。

· is/setWrapStyleWord():设置在单词过长的时候是否要把长单词移到下一行。

JScrollPane

上面的示例构造完成之后,假设 JTextArea包含太多文本,而给定的空间中容纳不下,那这该怎么办?如果您以为会自动出现滚动条,那么很不幸,您错了。JScrollPane添补了这个空白,为Swing组件提供了处理所有与滚动条相关的动作。所以虽然为每个需要的组件提供滚动块可能有些痛苦,但是一旦添加了它,它就会自动处理每件事,包括在需要的时候隐藏/显示滚动条。

除了用需要自动换行的组件创建 JScrollPane之外,不必直接处理它。根据上面的示例,用JTextArea调用JScrollPane的构造函数,这为JTextArea创建了在文本过长时滚动的能力:

JScrollPane scroll = new JScrollPane(getTextArea()); add(scroll);

JScrollPane 也公开了它将创建的两个JScrollBar。这些JScrollBar组件也包含一些方法,可以用这些方法来修改组件的行为(虽然它们不在本教程的范围之内)。

使用 JScrollPane需要的方法是:

· getHorizontalScrollBar():返回水平的 JScrollBar组件。

· getVerticalScrollBar():返回垂直的 JScrollBar组件.

· get/setHorizontalScrollBarPolicy():这个“策略”可以是以下三个之一:Always、Never或As Needed。

· get/setVerticalScrollBarPolicy():与水平函数相同。

JList

JList 是一个有用的组件,用于向用户呈现许多选择。可以把它当作JComboBox的扩展。JList提供了更多选择,并添加了多选的能力。在JList与JComboBox之间进行选择通常取决于以下两个特性:如果需要多选,或者选择的选项超过15个(虽然这个数字并不是通用规则),那么就应当选择JList。

应用将 JList与JScrollPane结合使用,就像上面演示的那样,因为它能够呈现比它的空间所能容纳的更多的选项。

JList 包含选择模型的概念(在JTable中也会看到),在这里,可以设置JList接受不同类型的选择。这些类型是:单一选择(只能选择一项)、单一间隔选择(只能选择相邻选项),以及任意多项或者多项间隔选择(可以选择任意数量、任意组合的选择)。

JList 是第一个我称为“复杂组件”的组件,该复杂组件还包含JTable和JTree,它们支持大量的定制变化,其中包括改变UI的表现方式、处理数据的方式。因为本教程只是想介绍基础知识,所以我不想深入这些更高级的功能,但是在使用这些组件时有件事需要记住——它们带来的挑战要比目前为止介绍过的所有组件都大。

JList 中有许多处理数据的函数,而且根据我的说法,这些也只不过是使用JList的细节的皮毛而已。以下是一些基本方法:

· get/setSelectedIndex():获取/设置列表中选中的行;在多选择列表的情况下,返回一个int[]。

· get/setSelectionMode():与上面解释的一样,获取/设置选择模式,模式有:单一、单一间隔和多选间隔。

· setListData():设置在 JList中使用的数据。

· get/setSelectedValue():获得选中的对象(与选中行号对应)。

JTable

在考虑 JTable时,请想像一下一个Excel工作表,这样就可以对JTable在Swing中的作用有一个清晰的印象。它与工作表共享许多相同的特征:单元格、行、列、移动列、隐藏列等。JTable把JList的想法更进了一步。它不是在一列中显示数据,而是在多列中显示数据。让我们以人为例。JList只能显示人的一个属性——例如他或她的名字。而JTable就能够显示多个属性——名字、年龄、地址,等等。JTable是支持提供数据的大多数信息的Swing组件。

不幸的是,作为代价,JTable也是最难对付的Swing组件。许多UI开发人员都为了学习JTable的每个细节而头痛。在这里,我希望我把能把您解救出来,只用您的JTable知识处理问题。

许多 JList中的概念也扩展到了JTable,其中包括不同的选择间隔的概念。但是JList中一列的概念变成了JTable的单元格的概念。这意味着在JTable中进行选择时会有不同的方式,例如列、行或者一个单元格。

最后,JTable的大多数函数都超出本教程的范围;“中级 Swing”会深入这个复杂组件的更多细节。

JTree

JTree 是另外一个复杂组件,它不像JTable那样难用,但是也不像JList那么容易。使用JTree时麻烦的部分是它要求的数据模型。

JTree 的功能来自树的概念,树有分支和叶子。您在Windows中使用IE浏览器时,可能非常熟悉这个概念——可以展开和折叠分支,显示可以选择和取消选择的不同叶子。

您很有可能发现树在应用程序中不像表格或列表那样有用,所以在 Internet上没有许多有帮助的这方面的示例。实际上,像JTable一样,JTree没有什么入门级的功能。如果决定使用JTree,那么立即就可以达到中级水平,当然还必须学习随之而来的概念。因此,示例应用程序没有介绍JTree,所以也很不幸,不管是入门教程还是中级教程,都没有涉及这个不太流行的组件。

但是,树有一些时候是符合需求的合理的 UI组件。文件/目录系统就是一个示例(就像在IE浏览器中那样),而且当数据采取层次结构的时候,也就是说数据采用树的形式的时候,JTree就是最佳组件。

java swing入门教程_JAVA swing初级教程(四)相关推荐

  1. java flowlayout 左对齐_Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局).分享给大家供大家参考,具体如下: FlowLayout应该是Swing布局管理器学习中最简单.最基础的一个.所谓流式 ...

  2. java qq ui界面_java swing 创建一个简单的QQ界面教程

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.a ...

  3. java swing外文文献_Java Swing英文本pdf教程(Java Swing (O'Reilly))

    [实例简介] [实例截图] [核心代码] Java Swing Preface - 5 What This Book Covers About the Source Code Conventions ...

  4. java gui拖拽_Java Swing拖放

    Java Swing教程 - Java Swing拖放 拖放(DnD)是一种在应用程序中传输数据的方法. DnD允许我们通过拖动组件并将其拖放到另一个组件上来传输数据. 拖动的组件称为拖动源;它提供要 ...

  5. python语言入门详解-python初级教程:入门详解

    python初级教程:入门详解 Crifan Li 目录 前言 .................................................................... ...

  6. java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...

    Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果) package swing; import java.awt.AWTException; import java ...

  7. java swing实现计算器_Java swing实现的计算器功能完整实例

    本文实例讲述了Java swing实现的计算器功能.分享给大家供大家参考,具体如下: package awtDemo; import java.awt.*; import java.awt.event ...

  8. java.swing调难度_Java Swing BorderLayout调整了难度

    你可以在你的情况下使用的是 GridLayout,这里有两个JButtons会在JFrame调整大小时自行调整大小. import java.awt.GridLayout; import javax. ...

  9. java swing事件机制_java SWing事件调用的两种机制

    /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; import java.awt. ...

  10. java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

    这篇文字将要学习以下知识点: 1.如何给JButton按钮添加鼠标点击事件监听器 #1.addMouseListener(MouseListener l)  给JButton添加一个鼠标点击监听器l ...

最新文章

  1. ajax跨域原理以及解决方案
  2. 使用VScode开发ESP8266,PlatformIO开发ESP8266
  3. 关于linux驱动程序的学习
  4. matlab 生成几个聚类点函数nngenc函数
  5. spring boot实战(第七篇)内嵌容器tomcat配置
  6. CentOS6.3 重启后/etc/resolv.conf 被还原解决办法
  7. HDF及HDF-EOS数据格式简介
  8. 安全维护上最不应该犯的十个基本错误
  9. php极速链,php PHP极速链 战群源码系列(全自动采集更新+引流神器无数据库版) WEB(ASP,PHP,...) 261万源代码下载- www.pudn.com...
  10. NXP iMX8基于eIQ框架测试Machine Learning
  11. 巧解快速排序时间复杂度
  12. java 时分秒 转换 秒_java实现时间格式转换(int整数类型的秒/毫秒---时分秒毫秒)...
  13. Java小程序:个人所得税计算(与标准个税有差距)
  14. Matlab:FIR滤波器设计和音频信号滤波去噪
  15. 超参数优---贝叶斯优化及其改进(PBT优化)
  16. 为什么要学习 Python?这是我听过最实用的答案
  17. JAVA:实现PerfectCube完美立方公式算法(附完整源码)
  18. 黑鲨3pro手机如何升级鸿蒙5g系统,黑鲨3 Pro升降按键怎么进行设置
  19. 小程序Android分享朋友圈
  20. Rhinoceros 建模简介1

热门文章

  1. Keil软件仿真STM32时出现“no ‘write‘ permission”,“no ‘read‘ permission ”的错误
  2. Leetcode279完全平方数(工商银行面试题):广度优先搜索.md
  3. TableLayout的基本使用方式
  4. 虚拟机安装和激活并安装Centos
  5. oracle 统计一年中每个月数据总和_oracle 统计每年每月数据
  6. 四种形态图解_昆明市纪委市监委网站_四种形态_呈贡:图解2018年运用“四种形态”处置情况...
  7. Spring boot整合Bee
  8. android 搜索文件 provid,Android FileProvider无法找到文件
  9. mongo备份索引_MongoDB——备份 恢复 索引 hashed片键
  10. 实现自己的音乐搜索软件(二)