⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sliderdemo.java

📁 FTP客户端 实现了客户端与FTP服务器的连接。可以上传
💻 JAVA
字号:
package ftpclient;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.LineBorder;
import java.lang.reflect.InvocationTargetException;

public class SliderDemo
    extends JFrame {
  JProgressBar progressBar;
  JButton startButton;
  JButton stopButton;
  JTextArea output;
  private int num = 50; //default number
  Object lock = new Object();
  boolean shouldStop; //should thread to be stopped
  Thread myThread;

  public static void main(String[] args) {
    SliderDemo frame = new SliderDemo();
    frame.pack();
    frame.setVisible(true);
  }

  public SliderDemo() {
    setTitle("Demo of Slider");
    Container content = getContentPane();

//value is from 0 to 100,initial value is 50
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, num);
    slider.addChangeListener(new SliderListener());
    slider.setMajorTickSpacing(10);
    slider.setMinorTickSpacing(2);
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);

    ButtonListener buttonListener = new ButtonListener();
    startButton = new JButton("Start");
    startButton.addActionListener(buttonListener);
    stopButton = new JButton("Stop");
    stopButton.addActionListener(buttonListener);

    progressBar = new JProgressBar();
    progressBar.setValue(0);
    progressBar.setStringPainted(true);

//use textarea to show the counter
    output = new JTextArea(5, 20);
    output.setMargin(new Insets(5, 5, 5, 5));
    output.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(output);

    JPanel panel = new JPanel();
    panel.add(startButton);
    panel.add(stopButton);
    panel.add(progressBar);

    content.add(slider, BorderLayout.NORTH);
    content.add(scrollPane, BorderLayout.CENTER);
    content.add(panel, BorderLayout.SOUTH);

    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }

//listener to the start button
  class ButtonListener
      implements ActionListener {
    public void actionPerformed(ActionEvent event) {
//start the task
      if (event.getSource() == startButton) {
        startButton.setEnabled(false);
        if (myThread == null) {
          myThread = new TaskThread(num); //create a task thread
          shouldStop = false;
          myThread.start(); //start the task thread
        }
      }
      else { //end the task
        synchronized (lock) {
          shouldStop = true;
          lock.notify(); //notify thread if stopped
        }
      }
    }
  }

//listen to the slider
  class SliderListener
      implements ChangeListener {
    public void stateChanged(ChangeEvent e) {
      JSlider source = (JSlider) e.getSource();
      if (!source.getValueIsAdjusting()) {
        num = (int) source.getValue();
      }
    }
  }

//task will be executed in a thread and monitored by a progress bar
  class TaskThread
      extends Thread {
    private int max;

    public TaskThread(int max) {
      this.max = max;
    }

    public void run() {
      int min = 0;
      progressBar.setValue(min);
      progressBar.setMinimum(min);
      progressBar.setMaximum(max);

      Runnable runner = new Runnable() {
        public void run() {
          int value = progressBar.getValue();
          value++; //increase counter value
          progressBar.setValue(value); //change current value of progress bar
          output.setText("Number:" + value);
        }
      };

      for (int i = min; i < max; i++) {
        try { //block until AWT events hava been processed
          SwingUtilities.invokeAndWait(runner);
        }
        catch (InvocationTargetException e) {
          break;
        }
        catch (InterruptedException e) {
//Ignore Exception
        }

        synchronized (lock) {
          if (shouldStop) //check if Stop is pressed
            break;
          try {
            lock.wait(100);
          }
          catch (InterruptedException e) {
//Ignore Exception
          }
        }
      }

      startButton.setEnabled(true); //enable button
      myThread = null;
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -