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

📄 scrollbardemo.java

📁 此源码为机械工业出版社出版的《Java语言程序设计》第三版所配套的书中所有源代码。
💻 JAVA
字号:
// ScrollBarDemo.java: Use scrollbars to move the message
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ScrollBarDemo extends JFrame implements AdjustmentListener
{
  // Declare scrollbars
  JScrollBar jscbHort, jscbVert;

  // Declare a MessagePanel
  MessagePanel messagePanel;

  // Main method
  public static void main(String[] args)
  {
    ScrollBarDemo frame = new ScrollBarDemo();
    // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }

  // Constructor
  public ScrollBarDemo()
  {
    setTitle("ScrollBar Demo");

    // Create a vertical scrollbar
    jscbVert = new JScrollBar();
    jscbVert.setOrientation(Adjustable.VERTICAL);

    // Create a horizontal scrollbar
    jscbHort = new JScrollBar();
    jscbHort.setOrientation(Adjustable.HORIZONTAL);

    // Add scrollbars and message panel to the frame
    messagePanel = new MessagePanel("Welcome to Java");
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(messagePanel, BorderLayout.CENTER);
    getContentPane().add(jscbVert, BorderLayout.EAST);
    getContentPane().add(jscbHort, BorderLayout.SOUTH);

    // Register listener for the scrollbars
    jscbHort.addAdjustmentListener(this);
    jscbVert.addAdjustmentListener(this);
  }

  // Handle scrollbar adjustment actions
  public void adjustmentValueChanged(AdjustmentEvent e)
  {
    if (e.getSource() == jscbHort)
    {
      // getValue() and getMaximumValue() return int, but for better
      // precision, use double
      double value = jscbHort.getValue();
      double maximumValue = jscbHort.getMaximum();
      double newX = (value*messagePanel.getSize().width/maximumValue);
      messagePanel.setXCoordinate((int)newX);
      messagePanel.repaint();
    }
    else if (e.getSource() == jscbVert)
    {
      // getValue() and getMaximumValue() return int, but for better
      // precision, use double
      double value = jscbVert.getValue();
      double maximumValue = jscbVert.getMaximum();
      double newY = (value*messagePanel.getSize().height/maximumValue);
      messagePanel.setYCoordinate((int)newY);
      messagePanel.repaint();
    }
  }
}

⌨️ 快捷键说明

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