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

📄 insertd.java

📁 Java 入门书的源码
💻 JAVA
字号:
//Copyright (c) 1998, Arthur Gittleman
//This example is provided WITHOUT ANY WARRANTY either expressed or implied.

/* Provides a user interface for insertion sorting.
 * 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 InsertD extends Applet
    implements ActionListener, ItemListener {
  private TextField number = new TextField(5);
  private DrawOn canvas = new DrawOn();
  private int [] item;
  private int count = 0;
  private CheckboxGroup acquire = new CheckboxGroup();
  private Checkbox random = new Checkbox("Random",false,acquire);
  private Checkbox manual = new Checkbox("Manual",false,acquire);
  private Label size = new Label("Size");
  private TextField getSize = new TextField("10",5);
  private Button sort = new Button("Sort");
  private Label enter = new Label("Enter");
  private int nextCount = 1;
  private int itemSize = 0;
  private Dimension d;

  public void init() {
    setLayout(new BorderLayout());
    Panel p = new Panel();  
    Panel p1 = new Panel();
    p1.setLayout(new GridLayout(2,1));
    p1.add(random);
    p1.add(manual);
    p.add(p1);
    Panel p2 = new Panel();
    p2.setLayout(new GridLayout(2,1));
    p2.add(size);
    p2.add(getSize);
    p.add(p2);
    p.add(sort);
    Panel p4 = new Panel();
    p4.setLayout(new GridLayout(2,1));
    p4.add(enter);
    p4.add(number);
    p.add(p4);
    add(p,"North");
    canvas.setBackground(Color.pink);
    add(canvas, "Center");
    number.addActionListener(this);
    d = getSize(); 
    number.setEnabled(false);
    sort.setEnabled(false);
    sort.addActionListener(this);
    random.addItemListener(this);
    manual.addItemListener(this);
  }
  public void itemStateChanged(ItemEvent event) {
    String label = (String)event.getItem();
    if (label.equals("Random"))
       sort.setEnabled(true);
    else if (label.equals("Manual"))
       number.setEnabled(true);
    random.setEnabled(false);
    manual.setEnabled(false);
  }
  public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    String name = event.getActionCommand();
    if (source == number) {
      if (count == 0) { 
        itemSize = new Integer(getSize.getText()).intValue();
        item = new int[itemSize];
      }  
      if (count < itemSize) { 
        item[count] = new Integer(number.getText()).intValue();
        insertNext(item,count++);
        canvas.repaint();
        number.setText("");
      }
      if (count == itemSize) 
          number.setEnabled(false);
    }
    else if (name.equals("Sort")) {
      itemSize = new Integer(getSize.getText()).intValue();
      item = new int[itemSize];
      count = itemSize;
      for (int i=0; i<itemSize; i++)
         item[i] = (int)(100*Math.random());
      canvas.repaint();
      if (count == 1)
        sort.setEnabled(false);
      else
        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]; 
    int j = 0;
    while (current > data[j]) j++;
    for (int k=size; k>j; k--)
      data[k] = data[k-1];
    data[j] = current; 
  }
  class DrawOn extends Canvas {  
    public void paint(Graphics g) {
      if (count > 0){
        int width = d.width/count;
        for (int i=0; i<count; i++) {
          if (i%2==0)g.setColor(Color.green);
          else       g.setColor(Color.blue);  
          g.fillRect(i*width,100-item[i],width,item[i]);
        }
      }
    }
  }
}       

⌨️ 快捷键说明

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