<p><strong>java 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 |
|