第11章+进度条Word文件下载.docx
《第11章+进度条Word文件下载.docx》由会员分享,可在线阅读,更多相关《第11章+进度条Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
importjava.awt.event.*;
publicclassTestextendsJApplet{
privateJProgressBar[]progressBars={
newJProgressBar(),
newJProgressBar()
};
publicvoidinit(){
ContainercontentPane=getContentPane();
contentPane.setLayout(newFlowLayout());
for(inti=0;
i<
progressBars.length;
++i){
JProgressBarpb=progressBars[i];
if(i==0){
pb.setStringPainted(true);
pb.setString("
CustomString"
);
}
if(i==1){
pb.setOrientation(JProgressBar.VERTICAL);
pb.setForeground(Color.yellow);
pb.setMaximum(1000);
pb.setValue(50);
pb.setBorder(
BorderFactory.createRaisedBevelBorder());
if(i==2){
pb.setForeground(Color.blue);
pb.setBorderPainted(false);
if(i==3){
pb.setForeground(Color.red);
pb.setValue(90);
BorderFactory.createEtchedBorder());
contentPane.add(pb);
这个小应用程序创建了一组进度条,并为每个进度条设置了各种不同的属性,从而产生了图11-1中示出的各种不同配置。
11.1.1进度条与线程
例11-2使用JProgressBar
privateJProgressBarprogressBar=newJProgressBar();
privateJButtonstartButton=newJButton("
start"
contentPane.add(startButton);
contentPane.add(progressBar);
progressBar.setStringPainted(true);
startButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
(newUpdateThread()).start();
});
classUpdateThreadextendsThread{
Runnableupdate,finish;
intvalue,min,max,increment;
publicUpdateThread(){
max=progressBar.getMaximum();
min=progressBar.getMinimum();
update=newRunnable(){
publicvoidrun(){
value=progressBar.getValue()+increment;
updateProgressBar(value);
finish=newRunnable(){
updateProgressBar(min);
startButton.setEnabled(false);
while(value+increment<
=max){
simulateTimeConsumingActivity();
SwingUtilities.invokeLater(update);
SwingUtilities.invokeLater(finish);
startButton.setEnabled(true);
privatevoidupdateProgressBar(intvalue){
progressBar.setValue(value);
privatevoidsimulateTimeConsumingActivity(){
try{
Thread.currentThread().sleep(1000);
increment=(max-min)/10;
catch(InterruptedExceptione){
e.printStackTrace();
11.1.2JProgressBar属性
11.1.3JProgressBar事件
例11-3监视一个进度条的值
importjavax.swing.event.*;
privateJProgressBarpb=newJProgressBar();
finalJButtonstartButton=newJButton("
(newGetInfoThread(pb)).start();
pb.addChangeListener(newChangeListener(){
publicvoidstateChanged(ChangeEvente){
intmin=pb.getMinimum(),max=pb.getMaximum();
intvalue=pb.getValue();
showStatus("
Min:
"
+min+"
Max:
+max+
"
Value:
+value);
classGetInfoThreadextendsThread{
JProgressBarpb;
publicGetInfoThread(JProgressBarprogressBar){
pb=progressBar;
max=pb.getMaximum();
min=pb.getMinimum();
value=pb.getValue()+increment;
pb.setValue(value);
value=min;
11.1.4JProgressBar类总结
11.1.5AWT兼容
11.2JSlider
例11-4一个简单的JSlider例子
importjava.util.*;
JSliderslider=newJSlider();
contentPane.add(slider,BorderLayout.NORTH);
11.2.1填充的滑杆
例11-5一个填充的滑杆
publicTest(){
slider.putClientProperty("
JSlider.isFilled"
Boolean.TRUE);
11.2.2滑杆间隔标记
例11-6显示滑杆的间隔标记
JPanelcontrolPanel=newControlPanel(slider);
contentPane.setLayout(newBorderLayout(0,40));
contentPane.add(controlPanel,BorderLayout.NORTH);
contentPane.add(slider,BorderLayout.CENTER);
classControlPanelextendsJPanel{
publicControlPanel(finalJSliderslider){
JCheckBoxpaintTicks=newJCheckBox("
PaintTicks"
JComboBoxminorSpacing=newJComboBox(),
majorSpacing=newJComboBox();
minorSpacing.addItem("
0"
3"
5"
10"
20"
majorSpacing.addItem("
add(paintTicks);
add(newJLabel("
MinorTickSpacing:
));
add(minorSpacing);
MajorTickSpacing:
add(majorSpacing);
paintTicks.addActionListener(newActionListener(){
JCheckBoxcb=(JCheckBox)e.getSource();
slider.setPaintTicks(cb.isSelected());
slider.repaint();
minorSpacing.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
JComboBoxcb=(JComboBox)e.getSource();
intspacing=Integer.parseInt(
(String)cb.getSelectedItem());
slider.setMinorTickSpacing(spacing);
slider.revalidate();
majorSpacing.addItemListener(newItemListener(){
slider.setMajorTickSpacing(spacing);
11.2.3滑杆标签
例11-7显示缺省的JSlider标签
slider.setPaintLabels(true);
slider.setMajorTickSpacing(20);
例11-8定制滑杆标签
Icon[]icons={
newImageIcon("
basketball.gif"
),
baseball.gif"
soccer.gif"
clipboard.gif"
filmstrip.gif"
crab.gif"
Hashtabletable=newHashtable();
for(inti=0,loc=0;
icons.length;
i++,loc+=20){
table.put(newInteger(loc),
newJLabel(Integer.toString(loc),
icons[i],
JLabel.LEFT));
slider.setLabelTable(table);
11.2.4反转滑杆值
例11-9中列出图11-10中示出的小应用程序的代码
privateJCheckBoxcheckBox=newJCheckBox("
Invert"
privateJSlider[]sliders={newJSlider(),
newJSlider(JSlider.VERTICAL)};
contentPane.add(checkBox);
sliders.length;
sliders[i].setPaintLabels(true);
sliders[i].setMajorTickSpacing(20);
contentPane.add(sliders[i]);
checkBox.addActionListener(newActionListener(){
++i)
sliders[i].setInverted(checkBox.isSelected());
11.2.5滑杆的外延值
例11-10设置一个滑杆的外延值
contentPane.add(slider,BorderLayout.SOUTH);
slider.addChangeListener(newChangeListener(){
JSliders=(JSlider)e.getSource();
+s.getMinimum()+
+s.get