java  Swing基础教程之图形化实例代码

论坛 期权论坛     
niminba   2021-5-22 16:35   26   0
<p><strong>java&nbsp; Swing基础教程之图形化实例代码</strong></p>
<p>与多线程、泛型等不同,Swing主要在于使用。 <br>
</p>
<p>下面主要放代码和注释,少说话。</p>
<p><strong>(一)基本框架</strong></p>
<div class="blockcode">
<pre class="brush:java;">
package Swing;

import java.awt.*;
import javax.swing.*;

/**
*
* @author QuinnNorris
* 基本框架
*/
public class FrameTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    // 开启一个线程,所有的Swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件。
    EventQueue.invokeLater(new Runnable() {
      // 匿名内部类,是一个Runnable接口的实例,实现了run方法
      public void run() {

        SimpleFrame frame = new SimpleFrame();
        // 创建下面自己定义的SimpleFrame类对象,以便于调用构造器方法

        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        // 将窗口最大化
        // 其他可选属性:Frame.NORMAL ICONIFIED MAXIMIZED_HORIZ MAXIMIZED_VERT
        // MAXIMIZED_BOTH

        frame.setTitle("Christmas");
        // 设置窗口标题

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 选择当用户关闭框架时进行的操作 ,在有些时候需要将窗口隐藏,不能直接退出需要用到这个方法

        frame.setVisible(true);
        // 将窗口可见化,这样以便用户在第一次看见窗口之前我们能够向其中添加内容
      }

    });
  }
  // main结束时,程序并没有结束,而是结束了主线程,知道所有框架关闭或者调用了 System.exit事才终止程序
}

class SimpleFrame extends JFrame {
  public SimpleFrame() {

    Toolkit kit = Toolkit.getDefaultToolkit();
    // 修改窗口在屏幕上面的位置,改变窗口大小
    // Toolkit类包含很多与本地窗口交互的方法

    Dimension screenSize = kit.getScreenSize();
    // Toolkit的获取频幕大小的方法返回一个Dimension的类对象

    setSize((int) (screenSize.getWidth()), (int) (screenSize.getHeight()));
    // setBounds(0,0,(int)(screenSize.getWidth()),(int)(screenSize.getHeight()));
    // 定义窗口的位置和大小
    // setLocation(0,0); 定位窗口距离左上角的位置
    // setLocationByPlatform(true); 让窗口系统控制窗口位置,距离上一个窗口很小的偏移量

    // 用图片来替换窗口图标
    Image img = new ImageIcon("D:/icon.png").getImage();
    setIconImage(img);

  }
}

</pre>
</div>
<p><strong>输出结果:一个充满整个屏幕的框体,标题栏名字叫做Christmas,图表是自己填充的图片。</strong><br>
</p>
<p><strong>(二)输出文字</strong></p>
<div class="blockcode">
<pre class="brush:java;">
package Swing;

import java.awt.*;
import javax.swing.*;

/**
*
* @author QuinnNorris
* 输出文字
*/
public class HelloWorld {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    // 开启一个线程,所有的Swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件
    EventQueue.invokeLater(new Runnable() {
      // 匿名内部类,是一个Runnable接口的实例,实现了run方法
      public void run() {

        JFrame frame = new HelloWorldFrame();
        // HelloworldFrame在下面定义,继承了JFrame,使用其中的构造器方法

        frame.setTitle("HelloWrold");
        // 设置标题

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 选择当用户关闭框架时进行的操作 ,在有些时候需要将窗口隐藏,不能直接退出需要用到这个方法

        frame.setVisible(true);
        // 将窗口可见化,这样以便用户在第一次看见窗口之前我们能够向其中添加内容
      }
    });

  }

}

// 编写继承了JFrame的类,我们的工作在这里进行
class HelloWorldFrame extends JFrame {
  public HelloWorldFrame() {

    add(new HelloWorldComponent());
    //向其中添加一个实例化的实现JComponent类的子类

    pack();
    //调用框架组件的首选大小,或者我们可以用SetSize方法来替换它
  }
}

class HelloWorldComponent extends JComponent {
  public static final int MESSAGE_X = 75;
  public static final int MESSAGE_Y = 100;

  private static final int DEFAULT_WIDTH = 300;
  private static final int DEFAULT_HEIGHT = 200;

  /**
   * 我们覆盖了这个以用来书写内容
   *
   * @param g
   *      Graphics对象保存着用于绘制图像和文本的设置
   */
  public void paintComponent(Graphics g) {
    g.drawString("Hello World!", MESSAGE_X, MESSAGE_Y);
    // 参数:书写内容,字符串中第一个字符位于从左向右75像素,字符串中第一个字符从上向下100像素
  }

  /**
   * 我们覆盖了这个方法来表示出这个类的组件的大小
   *
   * @return 返回这个类的组件本身应该有多大
   */
  public Dimension getPreferredSize() {
    return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    // 返回一个Dimension
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP