sort.java

来自「Java 入门书的源码」· Java 代码 · 共 76 行

JAVA
76
字号
//Copyright (c) 1998, Arthur Gittleman
//This example is provided WITHOUT ANY WARRANTY either expressed or implied.

/* Simplifies Example 8.16. 
 * The user can choose random data or input values
 * manually.  The user specifies the size of the data.
 * As the user inserts each item, the chart is redisplayed.
 */  

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Sort extends Applet
    implements ActionListener {
  DrawOn canvas = new DrawOn();
  int [] item;
  int count = 0;
  Button sort = new Button("Sort");
  int nextCount = 2;
  int itemSize = 10;
  Dimension d;

  public void init() {
    setLayout(new BorderLayout());
    Panel p = new Panel();
    p.add(sort);
    add(p,"North");
    canvas.setBackground(Color.pink);
    add(canvas, "Center");
    d = getSize();
    sort.addActionListener(this);
  }
  public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    String name = event.getActionCommand();
    if (name.equals("Sort")) {
      item = new int[itemSize];
      count = itemSize;
      for (int i=0; i<itemSize; i++)
         item[i] = (int)(100*Math.random());
      canvas.repaint();
      sort.setLabel("Next");
    }
    else if (name.equals("Next")) {
      insertNext(item,nextCount++);
      canvas.repaint();
      if (nextCount > count)
         sort.setEnabled(false); 
    }   
  }   
  public void insertNext(int [] data, int size) {
    int current = data[size-1]; 
    int j = 0;
    while (current > data[j]) j++;
    for (int k=size-1; k>j; k--)
      data[k] = data[k-1];
    data[j] = current; 
  }

  class DrawOn extends Canvas {  
    public void makeChart(int [] data, int size, Graphics g) {
      int width = d.width/size;
      for (int i=0; i<size; i++) {
        if (i%2==0)g.setColor(Color.green);
        else       g.setColor(Color.blue);  
        g.fillRect(i*width,100-data[i],width,data[i]);
      }
    }
   
    public void paint(Graphics g) {
      if (count > 0)
        makeChart(item,count,g);
    }
  } 
}       

⌨️ 快捷键说明

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