版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年殡仪服务一条龙合同
- 防汛抗旱宣传教育实施指南
- 2026年城市社区智慧气象预警信息发布合同
- 2026年网络文化数据安全管理合同
- 高火险期森林防火强化措施
- 幼儿园组织与管理教学标准教案 幼儿园教学管理
- 尾矿工安全强化考核试卷含答案
- 水泥混凝土制品制作工冲突解决强化考核试卷含答案
- 瓦斯防突工创新应用考核试卷含答案
- 高中劳动与技术教学中3D打印可视化的实践教学模式研究课题报告教学研究课题报告
- 2025年1月黑龙江省普通高中学业水平合格性考试物理试卷(含答案)
- 知识点及2025秋期末测试卷(附答案)-苏教版(新教材)小学科学小学科学二年级上册
- 《城市轨道交通车站机电设备运用》课件 项目三:站台门系统
- 船舶协议装运合同
- 企业税务规划合规审查手册
- 员工代收工资协议书
- 附件扭转诊治中国专家共识(2024年版)解读
- 全员品质意识培训
- 货物代理报关合同范本
- 2025甘肃酒泉市公安局招聘留置看护岗位警务辅助人员30人(第三批)考试笔试备考题库及答案解析
- 2025高中历史时间轴与大事年表
评论
0/150
提交评论