Swing是GUI(图形用户界面)开发工具包。使用Swing开发的Java应用程序,其界面是不受本地系统平台限制的,也就是说Swing开发的Java应用程序移植到其他系统平台上时,其界面外观是不会改变的
Swing窗体是Swing的一个组件,同时也是创建图形化用户界面的容器,可以将其它组件放置在窗体容器中。
JFrame窗体是一个容器,在Swing开发中我们经常要用到,它是Swing程序中各个组件的载体。语法格式如下:
JFrame jf = new JFrame(title);
直接用的简单的示例
import java.util.Scanner;
import javax.swing.*;
public class helloworld {
public void CreateJFrame(){
JFrame jf = new JFrame("这是一个JFrame窗体");
jf.setVisible(true);
jf.setSize(500,300);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new helloworld().CreateJFrame();
}
}
继承JFrame的简单示例
import java.util.Scanner;
import javax.swing.*;
import java.awt.*;
public class helloworld extends JFrame{
public void init()
{
this.setVisible(true);
this.setSize(500,350);
this.setTitle("Hello World!");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JLabel j1 = new JLabel("王晓宇我喜欢你");
j1.setHorizontalAlignment(SwingConstants.CENTER);
Container container = this.getContentPane();
container.add(j1);
container.setBackground(Color.GREEN);
}
public static void main(String[] args) {
new helloworld().init();
}
}
JDialog窗体
JDialog窗体是Swing组件中的对话框,继承了AWT组件中的java.awt.Dialog类。功能是从一个窗体中弹出另一个窗体。
import java.util.Scanner;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class helloworld extends JDialog{
public helloworld()
{
super(new MyJFrame(),"这是一个JDialog窗体",true);
Container container = this.getContentPane();
container.add(new JLabel("王晓宇我喜欢你hhhh!"));
this.setSize(500,350);
}
public static void main(String[] args) {
new helloworld();
}
}
class MyJFrame extends JFrame{
public MyJFrame()
{
this.setVisible(true);
this.setSize(700,500);
this.setTitle("王晓宇我喜欢你");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container container = this.getContentPane();
container.setLayout(null);
JButton jb = new JButton("点击弹出对话框");
jb.setBounds(20,30,200,50);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new helloworld().setVisible(true);
}
});
container.add(jb);
}
}
标签组件
在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。上面我们提到的JLabel就是这里的内容。
JLabel jl = new JLabel();创建不带图标和文本的JLabel对象
图标:图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。
在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。注意,Icon是接口,在使用Icon接口的时候,必须实现Icon接口的三个方法:
import java.util.Scanner;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class helloworld extends JFrame implements Icon{
private int width;
private int height;
public helloworld(){}
public helloworld(int width, int height){
this.width = width;
this.height = height;
}
public int getIconHeight(){
return this.height;
}
public int getIconWidth(){
return this.width;
}
public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3){
arg1.fillOval(arg2,arg3,width,height);
}
public void init(){
helloworld hello = new helloworld(15,15);
JLabel jb = new JLabel("icon测试",hello, SwingConstants.CENTER);
Container container = getContentPane();
container.add(jb);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new helloworld().init();
}
}
图片
利用javax.swing.ImageIcon类根据现有图片创建图标。
import javax.swing.*;
import java.awt.*;
import java.net.*;
public class Main extends JFrame {
public Main(){
JLabel j1 = new JLabel("这是一个JFrame窗体,旁边是一个图片");
URL url = Main.class.getResource("捕获.PNG");
Icon icon = new ImageIcon(url);
j1.setIcon(icon);
j1.setHorizontalAlignment(SwingConstants.CENTER);
j1.setOpaque(true);
Container container = getContentPane();
container.add(j1);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(1000,850);
}
public static void main(String[] args) {
new Main();
}
}