BarsCom

本文介绍了一个使用Java Swing实现的简单示例应用,该应用包含了进度条、滚动条和滑块等组件。通过这些组件展示了如何在Swing中进行基本的事件监听与用户交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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){}

  }

}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值