第8章标签与按钮_第1页
第8章标签与按钮_第2页
第8章标签与按钮_第3页
第8章标签与按钮_第4页
第8章标签与按钮_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章标签与按钮Swing的标签和按钮分别用JLabel和JButton类表示,它们是能够显示文本或图标的简单组件。缺省时,标签没有边框,可以显示一个字符串,一个图标或同时显示字符串和图标。除了用于修饰文本域等不重要的小事情外,Swing的标签还能起到图像画布(显示一个图像的组件)的作用。由于AWT的图像不是组件,不能把它们添加到一个容器中。因此,使用AWT的开发人员实现了各种不同的图像画布类;然而,在Swing中,可以把JLabel类当作图像画面使用(注:有关图像画面的更多信息参见4.3.1“Swing组件中的定制绘制”一节)。

按钮大概是使用最为普遍的用户界面组件。按钮通常带有某种边框,且可以被鼠标或快捷键激活。Swing按钮比Swing标签要复杂得多,不仅因为能够激活它们来完成某个功能,而且很多其他Swing组件都是AbstractButton类的扩展,而AbstractButton类是Swing按钮的基类。8.1JLabel与JBution

8.2JLabel例8-1运行中的JLabelimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTestextendsJApplet{ publicTest(){ ContainercontentPane=getContentPane(); JLabelimageOnly=newJLabel(newImageIcon(this.getClass().getResource("dogs.gif"))); JLabeltextAndImage=newJLabel("Vote!", newImageIcon(this.getClass().getResource("ballot_box.gif")), JLabel.RIGHT); JScrollPanescrollPane=newJScrollPane(imageOnly); scrollPane.setPreferredSize(newDimension(270,200)); contentPane.setLayout( newFlowLayout(FlowLayout.CENTER,25,25)); contentPane.add(textAndImage); contentPane.add(scrollPane); }}8.2.1内容排列

例8-2设置Swing标签的排列属性import.URL;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;publicclassTestextendsJAppletimplementsSwingConstants{ JLabel label =newJLabel("Action!"); JPanel controlPanel =newJPanel(); JComboBox alignmentHorizontal =newJComboBox(); JComboBox alignmentVertical =newJComboBox(); publicvoidinit(){ ContainercontentPane=getContentPane(); ImageIconicon=newImageIcon(this.getClass().getResource("slate.gif")); label.setIcon(icon); label.setHorizontalAlignment(CENTER); label.setFont(newFont("Times-Roman",Font.ITALIC,20)); label.setMaximumSize(newDimension(0,150)); setupComboBoxes(); setupControlPanel(); contentPane.setLayout(newBorderLayout()); contentPane.add(controlPanel,"North"); contentPane.add(label,"Center"); alignmentVertical.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intc=getSwingConstantByName(s); label.setVerticalAlignment(c); } }); alignmentHorizontal.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intc=getSwingConstantByName(s); label.setHorizontalAlignment(c); } }); } voidsetupComboBoxes(){ alignmentVertical.addItem("Top"); alignmentVertical.addItem("Center"); alignmentVertical.addItem("Bottom"); alignmentHorizontal.addItem("Left"); alignmentHorizontal.addItem("Center"); alignmentHorizontal.addItem("Right"); alignmentVertical.setSelectedItem( getSwingConstantName( label.getVerticalAlignment())); alignmentHorizontal.setSelectedItem( getSwingConstantName( label.getHorizontalAlignment())); } voidsetupControlPanel(){ controlPanel.setBorder( BorderFactory.createTitledBorder("Alignment")); controlPanel.add(newJLabel( "Vertical:")); controlPanel.add(alignmentVertical); controlPanel.add(Box.createHorizontalStrut(5)); controlPanel.add(Box.createHorizontalStrut(25)); controlPanel.add(newJLabel( "Horizontal:")); controlPanel.add(Box.createHorizontalStrut(5)); controlPanel.add(alignmentHorizontal); } intgetSwingConstantByName(Strings){ if(s.equalsIgnoreCase("left")) returnLEFT; elseif(s.equalsIgnoreCase("center")) returnCENTER; elseif(s.equalsIgnoreCase("right")) returnRIGHT; elseif(s.equalsIgnoreCase("top")) returnTOP; elseif(s.equalsIgnoreCase("bottom")) returnBOTTOM; return-1; } StringgetSwingConstantName(intc){ if(c==LEFT) return"Left"; elseif(c==CENTER) return"Center"; elseif(c==RIGHT) return"Right"; elseif(c==TOP) return"Top"; elseif(c==BOTTOM) return"Bottom"; return"undefined"; }}8.2.2文本的位置

例8-3设置标签的文本位置import.URL;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;publicclassTestextendsJAppletimplementsSwingConstants{ JLabellabel=newJLabel("Action!"); JPanelcontrolPanel=newJPanel(); JComboBoxalignmentHorizontal=newJComboBox(); JComboBoxalignmentVertical=newJComboBox(); publicvoidinit(){ ContainercontentPane=getContentPane(); ImageIconicon=newImageIcon(this.getClass().getResource("penguin.gif")); label.setIcon(icon); label.setHorizontalTextPosition(CENTER); label.setFont(newFont("Times-Roman",Font.ITALIC,20)); setupComboBoxes(); setupControlPanel(); label.setHorizontalAlignment(JLabel.CENTER); label.setVerticalAlignment(JLabel.CENTER); contentPane.setLayout(newBorderLayout()); contentPane.add(controlPanel,"North"); contentPane.add(label,"Center"); alignmentVertical.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intc=getSwingConstantByName(s); label.setVerticalTextPosition(c); } }); alignmentHorizontal.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intc=getSwingConstantByName(s); label.setHorizontalTextPosition(c); } }); } voidsetupComboBoxes(){ alignmentVertical.addItem("Top"); alignmentVertical.addItem("Center"); alignmentVertical.addItem("Bottom"); alignmentHorizontal.addItem("Left"); alignmentHorizontal.addItem("Center"); alignmentHorizontal.addItem("Right"); alignmentVertical.setSelectedItem( getSwingConstantName( label.getVerticalTextPosition())); alignmentHorizontal.setSelectedItem( getSwingConstantName( label.getHorizontalTextPosition())); } voidsetupControlPanel(){ controlPanel.setBorder( BorderFactory.createTitledBorder("TextPosition")); controlPanel.add(newJLabel("Vertical:")); controlPanel.add(alignmentVertical); controlPanel.add(Box.createHorizontalStrut(5)); controlPanel.add(Box.createHorizontalStrut(25)); controlPanel.add(newJLabel("Horizontal:")); controlPanel.add(Box.createHorizontalStrut(5)); controlPanel.add(alignmentHorizontal); } intgetSwingConstantByName(Strings){ if(s.equalsIgnoreCase("left")) returnLEFT; elseif(s.equalsIgnoreCase("center")) returnCENTER; elseif(s.equalsIgnoreCase("right")) returnRIGHT; elseif(s.equalsIgnoreCase("top")) returnTOP; elseif(s.equalsIgnoreCase("bottom")) returnBOTTOM; return-1; } StringgetSwingConstantName(intc){ if(c==LEFT) return"Left"; elseif(c==CENTER) return"Center"; elseif(c==RIGHT) return"Right"; elseif(c==TOP) return"Top"; elseif(c==BOTTOM) return"Bottom"; return"undefined"; }}8.2.3图标/文本间隙

例8-4设置一个标签的图标/文本间隙import.URL;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;publicclassTestextendsJAppletimplementsSwingConstants{ publicvoidinit(){ ContainercontentPane=getContentPane(); JComboBoxiconTextGap=newJComboBox(); JPanelcontrolPanel=newJPanel(); ImageIconicon=newImageIcon(this.getClass().getResource("ladybug.gif")); finalJLabellabel=newJLabel("LadyBug",icon,CENTER); label.setFont(newFont("Times-Roman",Font.ITALIC,20)); iconTextGap.addItem("4"); iconTextGap.addItem("10"); iconTextGap.addItem("15"); iconTextGap.addItem("20"); iconTextGap.addItem("25"); controlPanel.add(newJLabel("Icon/TextGap:")); controlPanel.add(iconTextGap); contentPane.setLayout(newBorderLayout()); contentPane.add(controlPanel,"North"); contentPane.add(label,"Center"); iconTextGap.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intgap=Integer.parseInt(s); label.setIconTextGap(gap); } }); }}8.2.4许可状态

例8-5设置一个标签的许可状态import.URL;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;publicclassTestextendsJAppletimplementsSwingConstants{ publicvoidinit(){ ContainercontentPane=getContentPane(); JComboBoxiconTextGap=newJComboBox(); JPanelcontrolPanel=newJPanel(); ImageIconicon=newImageIcon(this.getClass().getResource("ladybug.gif")); finalJLabellabel=newJLabel("LadyBug",icon,CENTER); label.setFont(newFont("Times-Roman",Font.ITALIC,20)); iconTextGap.addItem("4"); iconTextGap.addItem("10"); iconTextGap.addItem("15"); iconTextGap.addItem("20"); iconTextGap.addItem("25"); controlPanel.add(newJLabel("Icon/TextGap:")); controlPanel.add(iconTextGap); contentPane.setLayout(newBorderLayout()); contentPane.add(controlPanel,"North"); contentPane.add(label,"Center"); iconTextGap.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intgap=Integer.parseInt(s); label.setIconTextGap(gap); } }); }}8.2.5JLabel属性

8.2.6JLabel事件

8.2.7JLabel类总结

例8-6创建JLabel实例import.URL;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;publicclassTestextendsJAppletimplementsSwingConstants{ publicvoidinit(){ ContainercontentPane=getContentPane(); JComboBoxiconTextGap=newJComboBox(); JPanelcontrolPanel=newJPanel(); ImageIconicon=newImageIcon(this.getClass().getResource("ladybug.gif")); finalJLabellabel=newJLabel("LadyBug",icon,CENTER); label.setFont(newFont("Times-Roman",Font.ITALIC,20)); iconTextGap.addItem("4"); iconTextGap.addItem("10"); iconTextGap.addItem("15"); iconTextGap.addItem("20"); iconTextGap.addItem("25"); controlPanel.add(newJLabel("Icon/TextGap:")); controlPanel.add(iconTextGap); contentPane.setLayout(newBorderLayout()); contentPane.add(controlPanel,"North"); contentPane.add(label,"Center"); iconTextGap.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEventevent){ JComboBoxb=(JComboBox)event.getSource(); Strings=(String)b.getSelectedItem(); intgap=Integer.parseInt(s); label.setIconTextGap(gap); } }); }}8.3按钮

8.4JButtion

例8-7一个按钮简单例子importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.util.*;publicclassTestextendsJApplet{ JButtonbutton=newJButton("button...", newImageIcon(this.getClass().getResource("exclaim.gif"))); intactCnt=0; publicvoidinit(){ ContainercontentPane=getContentPane(); contentPane.setLayout(newFlowLayout()); contentPane.add(button); button.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventevent){ showStatus(event.getActionCommand()+ "activated"+actCnt+"times"); actCnt++; } }); }}8.4.1JButtion属性

8.4.2JButtion事件

例8-8处理JButton事件importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.*;publicclassTestextendsJApplet{ //Iconicon=newImageIcon("icon.gif"); JButtonbutton=newJButton("button"); publicTest(){ ContainercontentPane=getContentPane(); button.setRolloverIcon(newImageIcon(this.getClass().getResource("punch.gif"))); button.setIcon(newImageIcon(this.getClass().getResource("open_hand.gif"))); contentPane.setLayout(newFlowLayout()); contentPane.add(button); button.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ System.out.println("action!"); } }); button.addChangeListener(newChangeListener(){ publicvoidstateChanged(ChangeEvente){ System.out.println(getButtonState()); } }); } privateStringgetButtonState(){ ButtonModelmodel=button.getModel(); Stringstate="ButtonState:"; state+=model.isSelected()?"selected":"deselected"; state+=model.isPressed()?",pressed": ",notpressed"; state+=model.isArmed()?",armed":",disarmed"; state+=model.isRollover()?",rollover": ",notrollover"; returnstate; }}8.4.3JButtion类总结

例8-9创建JButton实例importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTestextendsJApplet{ Iconicon=newImageIcon("icon.gif"); JButtonnoargButton=newJButton(), textButton=newJButton("text"), textIconButton=newJButton("text",icon), iconButton=newJButton(icon); publicTest(){ ContainercontentPane=getContentPane(); contentPane.setLayout(newFlowLayout()); contentPane.add(noargButton); contentPane.add(textButton); contentPane.add(iconButton); contentPane.add(textIconButton); }}例8-10把一个按钮指定为缺省的按钮importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTestextendsJApplet{ Iconicon=newImageIcon("icon.gif"); JButtonnoargButton=newJButton(), textButton=newJButton("text"), textIconButton=newJButton("text",icon), iconButton=newJButton(icon); publicTest(){ ContainercontentPane=getContentPane(); contentPane.setLayout(newFlowLayout()); contentPane.add(noargButton); contentPane.add(textButton); contentPane.add(iconButton); contentPane.add(textIconButton); }}

例8-11程序方式单击一个按钮importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTestextendsJApplet{ intclickDuration=68; publicTest(){ ContainercontentPane=getContentPane(); JPanelcontrolPanel=newJPanel(); JPanelbuttonPanel=newJPanel(); JButtondoClick=newJButton("doclick"); finalJButtonclickMe=newJButton("clickme"); finalJComboBoxcomboBox=newJComboBox(newObject[]{ "68","250","500","750","1000" }); controlPanel.add(newJLabel("ClickDuration:")); controlPanel.add(comboBox); buttonPanel.add(doClick); buttonPanel.add(clickMe); contentPane.add(controlPanel,BorderLayout.NORTH); contentPane.add(buttonPanel,BorderLayout.CENTER); getRootPane().setDefaultButton(doClick); doClick.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ clickMe.doClick(clickDuration); } }); comboBox.addItemListener(newItemListener(){ publicvoiditemStateChanged(ItemEvente){ if(e.getStateChange()==ItemEvent.SELECTED){ clickDuration=Integer.parseInt((String) comboBox.getSelectedItem()); } } }); }}例8-12JButton图标importjavax.swing.*;importjavax.swing.border.*;importjavax.swing.plaf.basic.*;importjava.awt.*;importjava.awt.event.*;publicclassTestextendsJApplet{ publicvoidinit(){ ContainercontentPane=getContentPane(); Iconicon=newStringIcon("iconforJButton"), rolloverIcon=newStringIcon("rollover"), pressedIcon=newStringIcon("pressed"), disabledIcon=newStringIcon("disabled"), selectedIcon=newStringIcon("selected"), rolloverSelectedIcon= newStringIcon("rolloverselected"), disabledSelectedIcon= newStringIcon("disabledselected"); finalJButtonbutton=newJButton(); button.setRolloverEnabled(true); button.setIcon(icon); button.setRolloverIcon(rolloverIcon); button.setRolloverSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论