hellojava4.java

来自「learning java的源代码。书中每个实例都有相关的代码example。」· Java 代码 · 共 86 行

JAVA
86
字号
//file: HelloJava4.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class HelloJava4    extends JComponent    implements MouseMotionListener, ActionListener, Runnable {  // Coordinates for the message  int messageX = 125, messageY = 95;  String theMessage;  JButton theButton;  int colorIndex; // Current index into someColors.  static Color[] someColors = { Color.black, Color.red,      Color.green, Color.blue, Color.magenta };  boolean blinkState;  public HelloJava4(String message) {    theMessage = message;    theButton = new JButton("Change Color");    setLayout(new FlowLayout(  ));    add(theButton);    theButton.addActionListener(this);    addMouseMotionListener(this);    Thread t = new Thread(this);    t.start(  );  }  public void paintComponent(Graphics g) {    g.setColor(blinkState ? getBackground() : currentColor(  ));    g.drawString(theMessage, messageX, messageY);  }  public void mouseDragged(MouseEvent e) {    messageX = e.getX(  );    messageY = e.getY(  );    repaint(  );  }  public void mouseMoved(MouseEvent e) {}  public void actionPerformed(ActionEvent e) {    // Did somebody push our button?    if (e.getSource(  ) == theButton)      changeColor(  );  }  synchronized private void changeColor(  ) {    // Change the index to the next color.    if (++colorIndex == someColors.length)      colorIndex = 0;    setForeground(currentColor(  )); // Use the new color.    repaint(  ); // Paint again so we can see the change.  }  synchronized private Color currentColor(  ) {    return someColors[colorIndex];  }  public void run(  ) {    try {      while(true) {        blinkState = !blinkState; // Toggle blinkState.        repaint(  ); // Show the change.        Thread.sleep(500);      }    }    catch (InterruptedException ie) {}  }  public static void main(String[] args) {    JFrame f = new JFrame("HelloJava4");    // Make the application exit when the window is closed.    f.addWindowListener(new WindowAdapter(  ) {      public void windowClosing(WindowEvent we) { System.exit(0); }    });    f.setSize(300, 300);    f.getContentPane(  ).add(new HelloJava4("Hello, Java!"));    f.setVisible(true);  }}

⌨️ 快捷键说明

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