ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:17.89KB ,
资源ID:9479993      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9479993.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第11章+进度条.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第11章+进度条.docx

1、第11章+进度条第11章 进度条、滑杆和分隔条本章介绍三个Swing组件:JProgressBar、JSlider和JSeparator。人们经常用进度条反映耗时任务已完成的百分比,本章将提供这样一个例子。但是,用ProgressMonitor和ProgressMonitorInputStream实用工具来反映一个任务的进度信息通常会更容易。“进度监控”小节中讨论了ProgressMonitor和ProgressMonitorInputStream实用工具。JProgressBar和JSlider与JSeparator一样,用来描述一个介于最小值和最大值之间的值。因此,与JProgressBa

2、r和JSlider相关的模型是BoundedRangeModel接口的一个实现。JSeparator是绘制一条蚀刻线的组件,它把逻辑上相关的组件分隔在一组,JSeparator组件可水平地垂直地放置。 11.1 JProgressBarJProgressBar是一个简单的组件,它一般是一种颜色部分或完全填充的矩形。缺省情况下,进度条配备了一个凹陷的边框,并水平放置。进度条还可以选择显示一个字符串,这个字符串在进度条矩形的中央位置上显示。这个字符串缺省时为耗时任务已完成的百分比。这个字符串可用JProgressBar.setString方法定制。图11-1中示出的小应用程序创建了不同配置的进度条

3、。 例11-1列出了图11-1中示出的小应用程序的代码。例11-1 各种配置的进度条import javax.swing.*;import java.awt.*;import java.awt.event.*; public class Test extends JApplet private JProgressBar progressBars = new JProgressBar(),new JProgressBar(),new JProgressBar(),new JProgressBar();public void init() Container contentPane = getCo

4、ntentPane();contentPane.setLayout(new FlowLayout();for(int i=0; i progressBars.length; +i) JProgressBar pb = progressBarsi;if(i = 0) pb.setStringPainted(true);pb.setString(Custom String);if(i = 1) pb.setOrientation(JProgressBar.VERTICAL);pb.setForeground(Color.yellow);pb.setMaximum(1000);pb.setValue

5、(50);pb.setBorder(BorderFactory.createRaisedBevelBorder();if(i = 2) pb.setForeground(Color.blue);pb.setBorderPainted(false);pb.setValue(50);pb.setStringPainted(true);if(i = 3) pb.setOrientation(JProgressBar.VERTICAL);pb.setForeground(Color.red);pb.setValue(90);pb.setStringPainted(true);pb.setBorder(

6、BorderFactory.createEtchedBorder();contentPane.add(pb);这个小应用程序创建了一组进度条,并为每个进度条设置了各种不同的属性,从而产生了图11-1中示出的各种不同配置。11.1.1 进度条与线程例11-2 使用JProgressBarimport javax.swing.*;import java.awt.*;import java.awt.event.*; public class Test extends JApplet private JProgressBar progressBar = new JProgressBar();priva

7、te JButton startButton = new JButton(start);public void init() Container contentPane = getContentPane();contentPane.setLayout(new FlowLayout();contentPane.add(startButton);contentPane.add(progressBar);progressBar.setStringPainted(true);startButton.addActionListener(new ActionListener() public void a

8、ctionPerformed(ActionEvent e) (new UpdateThread().start(););class UpdateThread extends Thread Runnable update, finish;int value, min, max, increment;public UpdateThread() max = progressBar.getMaximum(); min = progressBar.getMinimum();update = new Runnable() public void run() value = progressBar.getV

9、alue() + increment;updateProgressBar(value);finish = new Runnable() public void run() updateProgressBar(min);public void run() startButton.setEnabled(false);while(value + increment = max) simulateTimeConsumingActivity();SwingUtilities.invokeLater(update);SwingUtilities.invokeLater(finish);startButto

10、n.setEnabled(true);private void updateProgressBar(int value) progressBar.setValue(value);private void simulateTimeConsumingActivity() try Thread.currentThread().sleep(1000);increment = (max - min) / 10;catch(InterruptedException e) e.printStackTrace();11.1.2 JProgressBar属性11.1.3 JProgressBar事件例11-3

11、监视一个进度条的值import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*; public class Test extends JApplet private JProgressBar pb = new JProgressBar();public void init() Container contentPane = getContentPane();final JButton startButton = new JButton(start);contentPane.se

12、tLayout(new FlowLayout();contentPane.add(startButton);contentPane.add(pb);startButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) (new GetInfoThread(pb).start(););pb.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent e) int min = pb.getM

13、inimum(), max = pb.getMaximum();int value = pb.getValue();showStatus(Min: + min + , Max: + max +, Value: + value););class GetInfoThread extends Thread Runnable update, finish;JProgressBar pb;int value, min, max, increment;public GetInfoThread(JProgressBar progressBar) pb = progressBar;max = pb.getMa

14、ximum(); min = pb.getMinimum();update = new Runnable() public void run() value = pb.getValue() + increment;pb.setValue(value);finish = new Runnable() public void run() value = min;pb.setValue(value);public void run() while(value + increment = max) simulateTimeConsumingActivity();SwingUtilities.invok

15、eLater(update);SwingUtilities.invokeLater(finish);private void simulateTimeConsumingActivity() try Thread.currentThread().sleep(1000);increment = (max - min) / 10;catch(InterruptedException e) e.printStackTrace();11.1.4 JProgressBar类总结11.1.5 AWT兼容11.2 JSlider例11-4 一个简单的JSlider例子import java.awt.*;imp

16、ort java.awt.event.*;import javax.swing.*;import java.util.*; public class Test extends JApplet public void init() Container contentPane = getContentPane();JSlider slider = new JSlider();contentPane.add(slider, BorderLayout.NORTH);11.2.1 填充的滑杆例11-5 一个填充的滑杆import java.awt.*;import java.awt.event.*;im

17、port javax.swing.*; public class Test extends JApplet public Test() Container contentPane = getContentPane();JSlider slider = new JSlider();slider.putClientProperty(JSlider.isFilled,Boolean.TRUE);contentPane.add(slider, BorderLayout.NORTH);11.2.2 滑杆间隔标记例11-6 显示滑杆的间隔标记import java.awt.*;import java.aw

18、t.event.*;import javax.swing.*;import java.util.*; public class Test extends JApplet public void init() Container contentPane = getContentPane();JSlider slider = new JSlider();JPanel controlPanel = new ControlPanel(slider);contentPane.setLayout(new BorderLayout(0,40);contentPane.add(controlPanel, Bo

19、rderLayout.NORTH);contentPane.add(slider, BorderLayout.CENTER);class ControlPanel extends JPanel public ControlPanel(final JSlider slider) JCheckBox paintTicks = new JCheckBox(Paint Ticks);JComboBox minorSpacing = new JComboBox(),majorSpacing = new JComboBox();minorSpacing.addItem(0);minorSpacing.ad

20、dItem(3);minorSpacing.addItem(5);minorSpacing.addItem(10);minorSpacing.addItem(20);majorSpacing.addItem(0);majorSpacing.addItem(3);majorSpacing.addItem(5);majorSpacing.addItem(10);majorSpacing.addItem(20);add(paintTicks);add(new JLabel(Minor Tick Spacing:);add(minorSpacing);add(new JLabel(Major Tick

21、 Spacing:);add(majorSpacing);paintTicks.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JCheckBox cb = (JCheckBox)e.getSource();slider.setPaintTicks(cb.isSelected();slider.repaint(););minorSpacing.addItemListener(new ItemListener() public void itemStateChanged(ItemE

22、vent e) JComboBox cb = (JComboBox)e.getSource();int spacing = Integer.parseInt(String)cb.getSelectedItem();slider.setMinorTickSpacing(spacing);slider.revalidate(););majorSpacing.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) JComboBox cb = (JComboBox)e.getSource();int s

23、pacing = Integer.parseInt(String)cb.getSelectedItem();slider.setMajorTickSpacing(spacing);slider.revalidate(););11.2.3 滑杆标签例11-7 显示缺省的JSlider标签import java.awt.*;import java.awt.event.*;import javax.swing.*; public class Test extends JApplet public Test() Container contentPane = getContentPane();JSli

24、der slider = new JSlider();slider.setPaintLabels(true);slider.setMajorTickSpacing(20);contentPane.add(slider, BorderLayout.NORTH);例11-8 定制滑杆标签import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*; public class Test extends JApplet public Test() Container contentPane = get

25、ContentPane();JSlider slider = new JSlider();Icon icons = new ImageIcon(basketball.gif), new ImageIcon(baseball.gif), new ImageIcon(soccer.gif), new ImageIcon(clipboard.gif), new ImageIcon(filmstrip.gif), new ImageIcon(crab.gif), ;Hashtable table = new Hashtable();for(int i=0, loc=0; i icons.length;

26、 i+, loc += 20) table.put(new Integer(loc), new JLabel(Integer.toString(loc), iconsi,JLabel.LEFT); slider.setLabelTable(table);slider.setPaintLabels(true);slider.setMajorTickSpacing(20);contentPane.add(slider, BorderLayout.NORTH);11.2.4 反转滑杆值例11-9 中列出图11-10中示出的小应用程序的代码import java.awt.*;import java.a

27、wt.event.*;import javax.swing.*; public class Test extends JApplet private JCheckBox checkBox = new JCheckBox(Invert);private JSlider sliders = new JSlider(), new JSlider(JSlider.VERTICAL) ;public Test() Container contentPane = getContentPane();contentPane.setLayout(new FlowLayout();contentPane.add(

28、checkBox);for(int i=0; i sliders.length; +i) slidersi.setPaintLabels(true);slidersi.setMajorTickSpacing(20);contentPane.add(slidersi);checkBox.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) for(int i=0; i sliders.length; +i)slidersi.setInverted(checkBox.isSelected(

29、););11.2.5 滑杆的外延值例11-10 设置一个滑杆的外延值import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*; public class Test extends JApplet public Test() Container contentPane = getContentPane();JSlider slider = new JSlider();JPanel controlPanel = new ControlPanel(slider);contentPane.add(controlPanel, BorderLayout.NORTH);contentPane.add(slider, BorderLayout.SOUTH);slider.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent e) JSlider s = (JSlider)e.getSource();showStatus(Min: + s.getMinimum() + , Max: + s.get

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1