package Bars;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class HelloBars extends JFrame {
//protected static final HelloBars Hello ;//HelloBars中创建常量Hello
JScrollBar scrollbar;
JSlider slider;
JProgressBar progressbar;
JPanel it,it2,it3,it4;
JLabel label1,label2,label3;
static ProgressMonitor progressmonitor;
static int counter=0;
public HelloBars(String name){
super(name);
label1=new JLabel("",JLabel.CENTER);
label2=new JLabel("",JLabel.CENTER);
label3=new JLabel("",JLabel.CENTER);
it=new JPanel(new GridLayout(3,1,10,10));
it2=new JPanel(new BorderLayout()); //JPanel的默认的是FlowLayout,它允许组件有自己的最佳大小,拉伸也不做整
it3=new JPanel(new BorderLayout());
it4=new JPanel(new BorderLayout());
it.setBorder(BorderFactory.createMatteBorder(88, 88, 88, 88, Color.cyan));
// it.setBorder(BorderFactory.createLineBorder(Color.orange,8));
/************************************************************************/
scrollbar=new JScrollBar(JScrollBar.VERTICAL,25,10,0,100);
scrollbar.setBlockIncrement(10);
scrollbar.setUnitIncrement(2);
scrollbar.addAdjustmentListener(new MyAdjustmentListener());
it2.add(scrollbar);
it.add(label1);
/**********************************************************************/
progressbar=new JProgressBar(JProgressBar.VERTICAL,0,100);
it4.add(progressbar);
it.add(label3);
/**************************************************************************/
slider=new JSlider(JSlider.HORIZONTAL,0,100,25);
// slider.setExtent(30);
// slider.setValueIsAdjusting(false);滑尺动的时候,JSlider自动把他设置为true,这向组件上的所有ChangeEvent监听器
slider.setPaintTicks(true); //发出警告:这个事件可能是一系列事件中的一个,并且它们可以选择不立刻作出反应
slider.setPaintLabels(true); //所以,通常ChangeEvent不用显示的写出事件的处理了,写了也没用好像....
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setLabelTable(slider.createStandardLabels(20));
it3.add(slider);
it.add(label2);
slider.addChangeListener(new MyChangeListener());
/**************************************************************************/
progressmonitor=new ProgressMonitor(null,"Monitorint Progress","",0,100);
Timer timer=new Timer(500,MyActionListener);
timer.start();
/**************************************************************************/
getContentPane().add(it,BorderLayout.CENTER);
getContentPane().add(it2,BorderLayout.EAST);
getContentPane().add(it3,BorderLayout.SOUTH);
getContentPane().add(it4,BorderLayout.WEST);
}
/****************************************************************/
public void UpdateBar(int newValue){
progressbar.setValue(newValue);
label3.setText("<html><font color=green size=+1>"+"current Left_Value</font>" +
"<p><font color=red size=+2> "+"is "+progressbar.getValue());
label3.setVerticalAlignment(SwingConstants.CENTER);
}
/********************************************************************/ //上下html的两种方法皆可
class MyAdjustmentListener implements AdjustmentListener{
public void adjustmentValueChanged(AdjustmentEvent e){
label1.setText("<html><font color=blue size=+1>"+"current Right_value </font><p><font color=red size=+2>is "+e.getValue());
label1.setVerticalAlignment(SwingConstants.TOP);
// repaint(); //注释掉效果没变
}
}
/***********************************************************************/
ActionListener MyActionListener=new ActionListener(){
public void actionPerformed(ActionEvent a){
SwingUtilities.invokeLater(new updateBar2());
}
};
/***********************************************************************/
class updateBar2 implements Runnable{
public void run(){
if(progressmonitor.isCanceled()){
progressmonitor.close();
System.exit(1);
}
progressmonitor.setProgress(counter);
progressmonitor.setNote("<html><font color=red>"+"Operation is "+counter+"% completed");
counter+=2;
}
}
/*********************************************************************/
//这段没实现任何作用,可不写
class MyChangeListener implements ChangeListener{
public void stateChanged(ChangeEvent e){
label2.setText("current Value of the slider is"+((Adjustable) e).getValue());
label2.setVerticalAlignment(JLabel.BOTTOM);
}
}
/*************************************************************************/
public static void main(String[] args) {
UIManager.put("ProgressMonitor.progressText","This is Progress!");
UIManager.put("OptionPane.CancelButtonText","Cancel");
final HelloBars frame=new HelloBars("BarsCom demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450,450);
frame.setVisible(true);
for(int i=0;i<=50;i++){
final int percent=2*i;
try{
SwingUtilities.invokeLater(new Runnable(){
public void run(){
frame.UpdateBar(percent);
}
});java.lang.Thread.sleep(500);
}catch(InterruptedException e){}
}
}
}