NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: JAVA应用服务器 .: swing 编程步骤

swing 编程步骤

11.5.4 编程步骤(一) 1. 导入Swing包 首先必须导入Swing包: import javax.swing.*; 在大多数Swing程序,可能还需要导入两个主要的AWT包: import java.awt.*; import java.awt.event.*; 2. 设置Look and Feel Swing允许在程序中指定Look and Feel,即:Java look and feel,Windows look and feel和CDE/Motif look and feel等。可以使用UIManaer.setLookAndFeel方法指定Look and Feel,在下面的代码段中,使用getCrossPlatformLookAndFeelClassName方法得到跨平台的Look and Feel(即Java look and feel). public static void main(String[]args) { try{ UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); }catch(Exception e) { } …//Create and show the GUI… } 如果希望使用程序当前运行的平台所用的Look and Feel,可以使用UIManager.getSystem LookAndFeelClassName方法。当然,还可以直接使用实际的类名来指定,例如: UIManager.setLookAndFeel( “com.sun.java.swing.plaf.windows.windowsLookAndFeel”); 总的来说,对于UIManager.setLookAndFeel方法,可以使用下面的参数来设置look and feel: ★UIManager.getCrossPlatformLookAndFeelClassName() 返回一个在任何平台都肯定能正常工作的Look and Feel,即Java look and feel. ★UIManager.getSystemLookAndFeelClassName() 指定当前平台所使用的Look and Feel。在Win32平台,则指定为Windows lood and feel;在Mac OS平台,为Mac OS look and feel;在Sun平台,为CDE/Motiflook and feel. ★“javax.swing.plaf.metal.MetalLookAndFeel” 指定为Java look and feel,它与UIManager.getCrossPlatformLookAndFeelClassName()方法相同。 ★“com.sun.java.swing.plaf.windows.Windows.WindosLookAndFeel” 指定为CDE/Motif look and feel,可以在任何平台上使用。 ★“java.swing.plat.mac.MacLookAndFeel” 指定为Mac OS look and feel,它公适用Mac OS平台。 当然,还可以使用其他参数,执行在UIManager.aetLookAndFeel方法中指定相应的类名。 在设置了Look and feel之后,还可以使用下面的代码来改变Look and Feel: UIManager.setLookAndFeel(InfName); SwingUtilities.rpdateComponentTreeUI(frame); Frame.pack(); 如果每次都使用固定的Look and Feel,还可以通过在程序之外设置环境变量来实现。在J2SE的HOME目录(例如c:\jdk1.3)下,找到lib子目录,创建一个文件swing.properties(如果不存在),在文件中加入类似于下面的内容: #Swing properties swing.defaultlaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel 3. 设置顶层容器 在Swing GUI程序中,至少应含有一个顶层Swing容器。对于大多数程序而言,顶层的Swing容器是Jframe,Jdialog或Japplet(对于Applet)。每一个Jframe对象实现一个主窗口,每一个Jdialog对象实现一个二级窗口,每一个Japplet对象在浏览器窗口中实现一个Applet的显示域。顶层Swing容器向其上的Swing组件提供了绘画和事件处理的支持。 在11.5.3小节例子中,SwingApplication仅使用了一个顶层容器,即Jframe,当用户关闭该frame,应用程序将退。 public class SwingApplication { //其他代码… public static void main(String[]args) { //其他代码… Jframe frame = new Jframe(“SwingApplication”); //…create the components to go into the frame… //…stick them in a container named contents… frame.getContentPane().add(contensts,BorderLayout.CENTER); //Finish setting up the frame,and show it. frame.addWindowsListener(…); frame.pack(); frame.setVisible(true); } } 在11.5.3小节例子中,创建了四个Swing组件:主窗口frame,一个顶层窗口,它的存在主要是提供一个放置其他组件的空间:panel是一个中间层容器,它的惟一目的是简化button和label位置的确定,利于组件的布局:button和label属于原子型的组件,它们不能再含有其他任何组件。通常,这些原子型组件被用于接收用户的输入。Swing API提供了许多原子型组件,掌握这些组件的特性和用法是学习Swing编程最主要的内容。 【图】是这四个组件的层次结构图。 从上图可以看出,即使是最简单的Swing程序,也会包含多个层次,其根总是顶层容器,其他所有容器或组件都被放置在根容器中。 每一个顶层容器间接地含有一个中间层容器,称为内容板(content pane)。对于大多数程序,我们无需知道在顶层容器和内容板之间有些什么。内容板直接或间接地含有所有可见的组件,但是,如果顶层容器有一个菜单条,那么,菜单条通常被放置在内容板之外的某个位置。 增加一个组件到一个容器,可以使用add方法。Add方法至少应有一个参数,即需增加的组件,而且,有时可能还需要另外一个参数来提供布局信息。 11.5.4 编程步骤(二) 4. 设置组件 在例11.17中,SwingApplication GUI含有一个button和一个label,下面是button的初始化代码: Jbuton button = new Jbutton(“I’m a Swing button!”); Button.setMnemonic(keyEvent.VK-I); Button.addActionListener(…create an action listener…); 代码段中,第1行是创建按钮对象;第2行是设置用户按下键盘的哪一个键等于是按下该按钮;第3行是为该按钮的点击登记事件处理器。 下面的代码段是初始化或操作label: …//where instance variables are declared: private static String labelPrefix = “Number of button clicks:”; private int numClicks = 0; …//in GUI initialization code: final Jlabel label = new Jlabel(labelPrefix+”0 ”); … label.aetLabelFor(button); …//in the event handler for button click: label.setText(labelPrefix+numClicks); 5. 增加组件到容器 在例12.17中,SwingApplication在将组件增加到frame之前,将button和label编成一组放入Jpanel容器中,代码如下: Jpanel pane = new Jpanel(); Pane.setBorder(BorderFactory.createEmptyBorder(30,30,10,30)); Pane.setLayout(new GridLayout(0,1)); Pane.add(button); Pane.add(label); 代码段的第1行是创建 一个Jpanel对象pane;第2行为Jpanel对象增加一人边界;第3行是设置一个布局管理器,最后两行是将button和label增加进pane中。 6. 事件处理 在例12.17中,SwingApplication有两个事件处理器,分别处理button的点击和窗口的关闭: button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { numClicks++; label.setText(labelPrefix+numClicks); } } ); //其他代码… frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } );

这篇文章对你多有用?

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited