java提供的jfc是什么,JAVA里的JFC是什么
大家好,今天小编来为大家解答以下的问题,关于java提供的jfc是什么,JAVA里的JFC是什么这个很多人还不知道,现在让我们一起来看看吧!
JAVA里的JFC是什么
JFC主要是由AWTAbstract Window Toolkit(AWT)、Swing以及Java 2D三者所构成,若将这些一同搭配运用,则用Java程式语言撰写开发成的使用者介面,无论移转、转移到Microsoft WindowsWindows、Mac OS X或Linux等各种不同的作业平台上,都能保有一致性的图像呈现。
AWT是比较旧的双介面函式库,它依然高度倚赖各作业平台自身所具备的绘图功效机能,且用一个比包容程式(Wrapper)还小的设计还去除、吸收各作业平台间的绘图功能机能差异,以致Java程式在跨平台移携后的绘图呈现不够一致,这使得AWT遭受到众多的批评。这意味着:AWT的Widget倚赖作业平台自身原有的Widget功效机能,程式设计师在开发撰写时必须去了解各作业平台在Widget方面的差异性,如此便偏离了Java程式语言最初的宗旨:跨平台一致性。
另外有一种可替用的图形函式库,即是由网景通讯公司Netscape公司所发展的“Internet Foundation Classes,简称:IFC”,IFC的平台独立性就高于AWT,之后升阳电脑将IFC再搭配其他技术,以此形成了Swing,Swing新增了一个具加挂性(Pluggable)、即“看即了的Widget”,运用Swing可让Java程式码保有过往以来所秉持强调的平台独立性,且在图形呈现与视觉观感上几乎与原生性应用程式没有差别。
Java桌面端程序开发
Java对于服务器个人电脑和移动设备来说是一项伟大的技术由于需要java的跨平台的特性因此java在服务器和移动设备方面的应用是非常成功的但java在个人电脑应用方面的情况和在服务器及移动设备方面的应用有所不同但是这很快就会有所改变至少比你想象得要快在这篇文章中我会分析一下java在桌面环境中的应用将怎样得到提升然后具体说一下java GUI(用户图形接口)的三个主要的工具:AWT Swing和SWT在下文中我将会开发一个完整的java桌面应用程序 Java与桌面端现在流行的桌面平台要数Windows Mac and Linux了但它们不是十全十美的 Windows主宰著桌面操作系统的市场其上有巨大的应用和开发群体但它昂贵且有许多安全漏洞 Linux有着稳固的基础它是开源的软件比Windows更可靠 Macs非常容易操作且不是黑客的目标但与Windows和Linux比起来 Mac的硬件和软件可选的余地非常的有限公司和个人选择他们的操作系统基于许多因素花费少且安全性高是首选的因素这导致一些组织从Windows系统转而选择Linux对许多用户来说可用性及对原有应用程序的支持是非常重要的因素这意味着Windows将继续享有巨大的市场 Mac有其自己忠诚的用户这使得苹果机仍然可以存活 Linux在桌面的流行及Mac的成功创造了多样性这种多样性正是Java需要的这种多样性使得Java在桌面有举足轻重的地位跨平台的支持 Java运行于所有相关的操作系统包括Windows Mac和Linux对于任何组织他想把现有的应用从一个操作系统移植到另一个操作系统而不用做太多的改动那么Java正是他们首选的桌面开发平台或许用微软的可视化工具很容易构建 NET应用但是这将使你被绑定在了Windows平台上了很多人也许想立刻用Linux代替Windows从而避免由微软件操作系统的漏洞带来的问题用户不能容忍的问题之一是当从Windows移植到Linux带来的巨大的费用如果你的应用程序用Java构建你就没有了这些问题 Java的图形用户界面看上去会跟你用的操作系统一样而并不需要做什么改动假如有一天又有一种桌面操作系统出现的话 java是个安全的赌注因为它现在能够运行在Windows和Linux上那么可以推测它也可以运行在将来可能出现的操作系统上这些操作系统可能或迟或早地由微软或是开源社区或是其它的人开发出来丰富的特征最初 Java只有非常有限的一些特征去构建图形用户界面思想就是用平台无关的Java应用程序接口打包不同的操作系统的本地图形用户界面称之为抽象的窗口工具仅有普通的部件如文件域文本区选择框单选按钮列表框和按钮被AWT支持图形和图像的特性支持非常有限也就是说只足够构建简单的applet程序认识到需要更高级的图形用户界面组件和图形能力 Sun公司开发了Swing Java D Java D图像的输入/输出 Java高级图像(JAI)和很多其它的这些中的一些窗体组件现在已经是Java标准版(J SE)里的一部分并且其它的一些扩展必须和你的应用程序打包在一起例如Swing Java D图像的输入/输出都是Java的核心API随着Java开发工具包(JDK)和Java运行环境一起提供让我们不要忘了J EE平台如果你开发服务器端的应用程序并且需要丰富的图形用户界面那么你毫无疑问应该选择Java这允许你把服务器端的一些代码移到客户端反之亦然例如一个项目可能开始是基于WEB和图形界面在某些时候用户可能要求图形元素不能在HTML中实现如果你选择java做客户端应用那么你可以重用这些当初用来做服务器端的代码如果你用远程调用一些类会真正地实现服务器和客户端的共享通过页面服务器 Java桌面应用也能够和其它的Java或非Java应用程序通信如CORBA TCP/IP或是 HTTP Java图形界面工具 Java有三个主要的图形界面工具 AWT Swing和SWT Swing是构建java图形界面标准的API(应用程序接口)一些AWT类由Swing基础而来 SWT是一个非常有前途的新的窗体工具由IBM资助但是事实上这三者相互补充他们满足不同的需求 AWT抽象窗口工具集为简单的applet程序设计它不适宜用来构建丰富的桌面图形界面但是从开始被介绍它至少有一个好的思想就是布局管理它负责为组件找到一个放置的位置这种机制是必需的因为GUI组件在不同的操作系统中有不同的尺寸现在 AWT扩展了组件模型和事件处理机制(由JavaBeans说明定义)新的图形API(称为Java D)支持剪贴板和拖拉操作打印准入和新的GUI工具Swing所有这些都归到Java基础类中(JFC) Swing Swing是曾经开发的最复杂的GUI之一它有一套完全的组件从按钮到文件域到表格树型和文件编辑器这些组件不依赖于操作系统本地的部件而是用原始的图形像直线矩形文字画出这种画代表感观插件它能够模仿本地的感观 Swing也有平台无关的外观称为 Metal Swing的结构由MVC模式得到启发这里在屏幕上的视觉GUI组件和支持数据的模型对象之间有一个明显的分隔在GUI和数据层之间的通讯基于事件在最初的Swing版本中有许多错误并且有执行问题这减慢了接受它的速度 Swing最大的问题是被从事于并且许多人相信它是为开发桌面应用而准备的今天有许多基于Swing开发的商业产品包括大多数的Java集成开发工具我所喜欢的集成开发工具是Jbuilder它的速度相当的快 SWT SWT是IBM为它的Eclipse集成开发环境而开发的图形用户界面工具 SWT可以在Eclipse环境外使用而且提供对操作系统本地图形用户界面的直接访问因此基于SWT的Java应用程序拥有本地的图形用户界面并且可以和本地别的应用程序和部件集成在一起假如你的桌面应用程序产生HTML报表你想把它显示给用户看你可以使用Swing去浏览简单的HTML文档但这不是一个理想的的解决方案最好是在你的应用程序里提供IE或者Mozilla浏览器引擎 SWT社区现在正在设计浏览器API这些API可以让你产生基于IE或者Mozilla的HTML窗口 SWT现在可以在AIX HPUX Linux QNX Solaris and Windows下面运行 Mac OS X is也在进行之中误解与Bug对于java/Swing一直有着误解诸如 Java/Swing太慢了或者是Java/Swing需要更多的内存 Swing也许在老式的奔腾的cpu而且只有 m内存运行JDK运行起来却是很慢但是如果在PIII级别的CPU有着 mb的内存运行JDK环境是足够快的对于一个应用程序来说鼠标在毫秒和在毫秒的反映的区别对于使用者来说看起来是没什么区别的 Java在企业级的数百人上千人同时在线的服务器表现的很好 Java在对于有限资源的移动设备上的表现也是很出色的那为什么Java不能成为很好的桌面应用程序呢?以我的观点看 Swing的bug比其运行速度慢这问题还严重例如如果你用的是JDK你将不能在表格(称为JTable)中输入%&($#!q等这些字符这八个字符和箭头键及Home End Pgup and Pgdn这几个键的键值是相同的其中一个由JTable由到的类调用了KeyEvent getCharCode()方法代替KeyEvent getKeyCode()这个bug这JDK已经得到了纠正你大概已经放弃过Swing如果你是从用JDK的Swing你可能因为你不能在表格里输入q而恼怒可能不幸的是你正需要用Jtable开发一个Swing应用你将花费许多时间从sun的bug数据库中查找解决的办法但没有发现你需要的(记住在那时Swing还是个新事物)你将花费更多的时间去看Swing的源代码和发展中的工作区经过了这个的经历之后很少有人很在另一个项目里再用Swing了你的工作区会像下面这样子 import java awt*; import java awt event*; import javax swing*; import javax swing table*; public class WorkingTable extends JTable{ public static final boolean JDK= System getProperty( java version) startsWith(); public void processKeyEvent(KeyEvent e){ if(JDK){ char ch= e getKeyChar(); if(e getID()== KeyEvent KEY_TYPED&&((<= ch&& ch<= 40)|| ch=='q')){ int anchorRow= getSelectionModel().getAnchorSelectionIndex(); int anchorColumn= getColumnModel().getSelectionModel().getAnchorSelectionIndex(); if(anchorRow!=-1&& anchorColumn!=-1){ if(!isEditing()) editCellAt(anchorRow, anchorColumn); Component editorComp= getEditorComponent(); if(isEditing()&& editorComp instanceof JTextField){ JTextField textField=(JTextField) editorComp; textField.setText(textField.getText()+ ch); return;}}}} super.processKeyEvent(e);}}不幸的是,Swing有许多像上面描述的那样的问题,一些问题很难解决,需要做大量的工作。Tw.WInGwiT.例如,Swing的打开文件和保存文件的对话框是基于称为JfileChooser的组件,它部分的执行了JDK 1.2和JDK 1.3(一些特性总是不能用的,要创建一个新的目录对大多数用户来是一个挑战)。我不知道为什么Sun需要几年的时间直到jdk1.4中才完成JfileChooser。在JDK 1.4之前,你有两种选择:用这种破烂的JfileChooser或是创建你自己的文件选择框,Borland公司在他们的JBuilder 4中做一个很好的文件打开对话框。然而,大多数的开发者用的是标准的JfileChooser,给他们的用户带来许多问题。有一件重要的事情需要注意:可以像上面描述的那个去创建工作环境,因为Swing的源代码是可以得到的。学习java源代码也能够让你成为更好的程序员并且让你理解工作在Java API的内部机制。当你开发你自己习惯的GUI组件,这点是有用 lishixinzhi/Article/program/Java/hx/201311/26851
java里的swing是什么意思,为什么取名swing
软件包 javax.swing
提供一组“轻量级”(全部是 Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。
接口摘要
Action Action接口提供 ActionListener接口的一个有用扩展,以便若干控件访问相同的功能。
BoundedRangeModel定义由 Slider和 ProgressBar这类组件使用的数据模型。
ButtonModel按钮的状态模型。
CellEditor此接口定义任何通用编辑器应该能够实现的方法。
ComboBoxEditor用于 JComboBox组件的编辑器组件。
ComboBoxModel用于组合框的数据模型。
DesktopManager DesktopManager对象由 DesktopPane对象所拥有。
Icon一个小的固定大小图片,通常用于装饰组件。
JComboBox.KeySelectionManager定义 KeySelectionManager的接口。
ListCellRenderer标识可用作“橡皮图章”以绘制 JList中单元格的组件。
ListModel此接口定义方法组件(如 JList),这些组件用于获取列表中每个单元格的值以及列表的长度。
ListSelectionModel此接口表示任何组件的当前选择状态,该组件显示一个具有稳定索引的值列表。
MenuElement可以放入菜单中的所有组件都应该实现此接口。
MutableComboBoxModel ComboBoxModel的可变版本。
Renderer为负责“呈现”(显示)值的对象定义需求。
RootPaneContainer此接口由具有单个 JRootPane子组件的组件来实现,这些子组件包括:JDialog、JFrame、JWindow、JApplet、JInternalFrame。
Scrollable为类似 JScrollPane的滚动容器提供信息的接口。
ScrollPaneConstants与 JScrollPane组件一起使用的常数。
SingleSelectionModel最多支持一个索引选项的模型。
SpinnerModel对象值的潜在无界序列的模型。
SwingConstants通常用于在屏幕上定位或定向组件的常量的集合。
UIDefaults.ActiveValue此类使用户能够在默认表中存储项,该默认表在每次使用某个 getXXX(key)方法进行查找时创建。
UIDefaults.LazyValue此类使用户能够在默认表中存储项,该默认表只有在第一次使用某个 getXXX(key)方法进行查找时才创建。
WindowConstants用于控制窗口关闭操作的常量。
类摘要
AbstractAction此类提供 JFC Action接口的默认实现。
AbstractButton定义按钮和菜单项的一般行为。
AbstractCellEditor
AbstractListModel该数据模型的抽象定义提供一个带内容的 List。
AbstractSpinnerModel此类提供 SpinnerModel接口的 ChangeListener部分,该接口应该适用于最具体的 SpinnerModel实现。
ActionMap ActionMap提供从 Object(称为键或 Action名)到 Action的映射。
BorderFactory提供标准 Border对象的工厂类。
Box使用 BoxLayout对象作为其布局管理器的一个轻量级容器。
Box.Filler参与布局但没有视图的轻量级组件的实现。
BoxLayout允许纵向或横向布置多个组件的布局管理器。
ButtonGroup此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域。
CellRendererPane此类被插入在单元格渲染器与使用它们的组件之间。
ComponentInputMap ComponentInputMap是与特定 JComponent相关联的 InputMap。
DebugGraphics支持图形调试的图形子类。
DefaultBoundedRangeModel BoundedRangeModel的一般实现。
DefaultButtonModel Button组件的数据模型的默认实现。
DefaultCellEditor表单元格和树单元格的默认编辑器。
DefaultComboBoxModel组合框的默认模型。
DefaultDesktopManager此类是 DesktopManager的实现。
DefaultFocusManager此类已被废弃,用 1.4 focus API取代。
DefaultListCellRenderer呈现列表中的一个项。
DefaultListCellRenderer.UIResource实现 UIResource的 DefaultListCellRenderer的子类。
DefaultListModel此类以松散方式实现 java.util.Vector API,它实现 1.1.x版本的 java.util.Vector,没有 collection类支持,并且在发生更改时通知 ListDataListener。
DefaultListSelectionModel列表选择的默认数据模型。
DefaultSingleSelectionModel SingleSelectionModel的一般实现。
FocusManager从 1.4 focus API开始,此类已被废弃。
GrayFilter一个图像过滤器,它通过将图像转换成灰度级图像并增亮图像中的像素来“禁用”图像。
ImageIcon一个 Icon接口的实现,它根据 Image绘制 Icon。
InputMap InputMap提供输入事件(目前只使用 KeyStroke)和 Object之间的绑定。
InputVerifier此类的用途是通过带文本字段的 GUI帮助客户端支持流畅的焦点导航。
InternalFrameFocusTraversalPolicy该 FocusTraversalPolicy可以有选择地提供确定 JInternalFrame初始 Component的算法。
JApplet java.applet.Applet的扩展版,它添加了对 JFC/Swing组件架构的支持。
JButton"push"按钮的实现。
JCheckBox复选框的实现,复选框是一个可以被选定和取消选定的项,它将其状态显示给用户。
JCheckBoxMenuItem可以被选定或取消选定的菜单项。
JColorChooser JColorChooser提供一个用于允许用户操作和选择颜色的控制器窗格。
JComboBox将按钮或可编辑字段与下拉列表组合的组件。
JComponent该类是除顶层容器外所有 Swing组件的基类。
JDesktopPane用于创建多文档界面或虚拟桌面的容器。
JDialog创建对话框窗口的主要类。
JEditorPane可编辑各种内容的文本组件。
JFileChooser JFileChooser为用户选择文件提供了一种简单的机制。
JFormattedTextField JFormattedTextField扩展了 JTextField,添加了对格式化任意值的支持,以及一旦用户编辑了文本就检索特定对象的支持。
JFormattedTextField.AbstractFormatter JFormattedTextField所使用的 AbstractFormatter实例,用于处理从 Object到 String和从 String到 Object的转换。
JFormattedTextField.AbstractFormatterFactory JFormattedTextField使用的 AbstractFormatterFactory实例,用来获得 AbstractFormatter实例,依次使用该实例格式化各个值。
JFrame java.awt.Frame的扩展版本,该版本添加了对 JFC/Swing组件架构的支持。
JInternalFrame提供很多本机窗体功能的轻量级对象,这些功能包括拖动、关闭、变成图标、调整大小、标题显示和支持菜单栏。
JInternalFrame.JDesktopIcon此组件表示 JInternalFrame的图标化版本。
JLabel用于短文本字符串或图像或二者的显示区。
JLayeredPane JLayeredPane为 JFC/Swing容器添加了深度,允许组件在需要时互相重叠。
JList该组件允许用户从列表中选择一个或多个对象。
JMenu菜单的该实现是一个包含 JMenuItem的弹出窗口,用户选择 JMenuBar上的项时会显示该 JMenuItem。
JMenuBar菜单栏的实现。
JMenuItem菜单中的项的实现。
JOptionPane JOptionPane有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。
JPanel JPanel是一般轻量级容器。
JPasswordField JPasswordField是一个轻量级组件,允许编辑一个单行文本,其视图指示键入内容,但不显示原始字符。
JPopupMenu弹出菜单的实现,弹出菜单是一个可弹出并显示一系列选项的小窗口。
JPopupMenu.Separator弹出与菜单有关的分隔符。
JProgressBar默认显示有界区间整数值的组件。
JRadioButton实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。
JRadioButtonMenuItem一个单选按钮菜单项的实现。
JRootPane该轻量级容器由 JFrame、JDialog、JWindow、JApplet和 JInternalFrame在后台使用。
JScrollBar滚动条的实现。
JScrollPane提供轻量级组件的 scrollable视图。
JSeparator JSeparator为实现分隔线提供了一个通用组件-通常用作菜单项之间的分隔符,以便将菜单项分成几个逻辑组。
JSlider一个让用户以图形方式在有界区间内通过移动滑块来选择值的组件。
JSpinner让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。
JSpinner.DateEditor其模型为 SpinnerDateModel的 JSpinner编辑器。
JSpinner.DefaultEditor一个针对非常特殊编辑器的简单基类,该类在 JFormattedTextField中显示模型的当前值的只读视图。
JSpinner.ListEditor其模型为 SpinnerListModel的 JSpinner编辑器。
JSpinner.NumberEditor其模型为 SpinnerNumberModel的 JSpinner编辑器。
JSplitPane JSplitPane用于分隔两个(只能两个)Component。
JTabbedPane一个组件,它允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换。
JTable JTable用来显示和编辑规则的二维单元表。
JTextArea JTextArea是一个显示纯文本的多行区域。
JTextField JTextField是一个轻量级组件,它允许编辑单行文本。
JTextPane可以用以图形方式表示的属性来标记的文本组件。
JToggleButton具有两个状态的(two-state)按钮的实现。
JToggleButton.ToggleButtonModel ToggleButton模型警告:此类的已序列化对象与以后的 Swing版本不兼容。
JToolBar JToolBar提供了一个用来显示常用的 Action或控件的组件。
JToolBar.Separator一个特定于工具栏的分隔符。
JToolTip用来显示 Component的“提示”。
JTree将分层数据集显示为轮廓的控件。
JTree.DynamicUtilTreeNode DynamicUtilTreeNode可以包装 vectors/hashtables/arrays/strings并根据需要创建适当的子树节点。
JTree.EmptySelectionModel EmptySelectionModel是一个不允许选择任何内容的 TreeSelectionModel。
JViewport用于查看基础信息的“视口”或“观察孔”。
JWindow JWindow是一个容器,可以显示在用户桌面上的任何位置。
KeyStroke表示键盘或等效输入设置上的键操作的 KeyStroke。
LayoutFocusTraversalPolicy根据 Component的大小、位置和方向对其排序的 SortingFocusTraversalPolicy。
LookAndFeel从可插入外观组件的角度全面展现外观的特性。
MenuSelectionManager MenuSelectionManager拥有菜单层次结构中的选项。
OverlayLayout要在彼此顶部安排组件的布局管理器。
Popup Popup用于向用户显示 Component,它通常位于特定包含层次结构中所有其他 Component的顶部。
PopupFactory顾名思义,PopupFactory用于获取 Popup的实例。
ProgressMonitor监视某个操作的进度的类。
ProgressMonitorInputStream监视读取某些 InputStream的进度。
RepaintManager此类管理重绘请求,以最大限度地降低重绘次数。
ScrollPaneLayout JScrollPane使用的布局管理器。
ScrollPaneLayout.UIResource ScrollPaneLayout的 UI资源版本。
SizeRequirements为方便布局管理器,计算组件的有关大小和位置信息。
SizeSequence一个 SizeSequence对象,它有效地维护一个包含大小和相应位置的顺序列表。
SortingFocusTraversalPolicy通过对焦点遍历循环的 Components按给定 Comparator排序确定遍历顺序的 FocusTraversalPolicy。
SpinnerDateModel Date序列的一个 SpinnerModel。
SpinnerListModel其值由数组或 List定义的 SpinnerModel的简单实现。
SpinnerNumberModel用于数字序列的 SpinnerModel。
Spring该 Spring类的实例将存储以下三个表示其行为特征的属性:minimum、preferred和 maximum值。
SpringLayout SpringLayout根据一组约束布置其相关容器的子组件。
SpringLayout.Constraints Constraints对象将管理组件大小和位置更改方式的约束存储在 SpringLayout控制的容器中。
SwingUtilities Swing实用方法的集合。
Timer在指定延迟之后激发一个或多个操作事件。
ToolTipManager管理系统中的所有 ToolTips。
TransferHandler此类用于处理往返于 Swing组件的 Transferable的传输。
UIDefaults Swing组件的默认值表。
UIDefaults.LazyInputMap LazyInputMap将在其 createValue方法中创建一个 InputMap。
UIDefaults.ProxyLazyValue此类提供一个可用于延迟加载要创建实例类的 LazyValue的实现。
UIManager此类跟踪当前的外观及其默认设置。
UIManager.LookAndFeelInfo为了配置菜单或为了初始应用程序设置而提供关于已安装的 LookAndFeel的少量信息。
ViewportLayout JViewport的默认布局管理器。
枚举摘要
JTable.PrintMode用于打印 JTable的打印模式。
异常摘要
UnsupportedLookAndFeelException指示在用户系统上不存在请求的外观管理类的异常。
软件包 javax.swing的描述
提供一组“轻量级”(全部是 Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。有关使用这些组件的程序员指南,请参阅 Creating a GUI with JFC/Swing,该内容在《The Java Tutorial》的结尾处。有关其他参考资料,请参阅相关文档。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!