目录
一、Swing概述
Swing特点:统一的风格、不依赖操作系统、轻量级组件、可插入外观组件
AWT:java.awt、风格不统一、依赖操作系统
1、Swing包:
2、常用Swing组件概述
二、Swing常用窗体
1、窗体JFrame:
package Swing程序设计; import java.awt.Color; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JLabel; public class JFRAME { public static void main(String[] args) { JFrame f=new JFrame("窗体标题");//创建窗体对象 f.setVisible(true);//设置窗体可见 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//隐藏窗口并停止程序 f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//无任何操作 f.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//隐藏窗体,但不停止程序 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放窗体资源 f.setSize(300,200);//设置窗体大小 单位:像素 f.setLocation(200,200);//设置坐标 单位:像素 f.setBounds(300,200,300,200);//设置窗体大小坐标 Container c=f.getContentPane();//获取窗体容器 c.setBackground(Color.BLUE);//设置窗体颜色 JLabel l=new JLabel("这是一个窗体"); c.add(l);//添加组件 // c.remove(l);//删除组件 c.validate();//验证容器中的组件 // f.setContentPane(c);//重新载入容器 f.setResizable(false);//设置窗体是否可以改变大小 // TODO 自动生成的方法存根 } }
2、JDialog窗体 :
package Swing程序设计; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class JDIALOG extends JDialog{ public JDIALOG(JFrame frame) { super(frame,"对话框标题",true);//按钮后只能出现一次!!! //第一个参数:父窗体对象 //第二个参数:对话框标题 //第三个参数:是否阻塞父窗体 Container c=getContentPane();//获取窗体容器 c.add(new JLabel("这是一个对话框")); setVisible(true);//设置窗体可见 setBounds(100,100,100,100);//设置窗体坐标和大小 } public static void main(String[] args) { JFrame f=new JFrame("父窗体"); f.setBounds(200,200,200,200); Container c=f.getContentPane(); JButton btn=new JButton("弹出对话框"); c.setLayout(new FlowLayout());//设置布局,使用流布局 c.add(btn); f.setVisible(true); f.setDefaultCloseOperation(EXIT_ON_CLOSE); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根 new JDIALOG(f); } }); // // TODO 自动生成的方法存根 } }
三、文字标签组件与图标
1、标签的使用
package Swing程序设计; import java.awt.Color; import java.awt.Container; import java.awt.Font; import javax.swing.*; public class biaoqiandeshiyong extends JFrame{ public biaoqiandeshiyong(){ setBounds(100,100,100,100); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c=getContentPane(); setVisible(true); JLabel l=new JLabel("这是一个标签"); // l.setText("更改标签内容"); // System.out.println(l.getText()); l.setFont(new Font ("楷体",Font.BOLD,20));//更改字体 l.setForeground(Color.blue);//更改前景色(字体颜色) c.add(l); } public static void main(String[] args) { new biaoqiandeshiyong(); } }
2、图标的使用
package Swing程序设计; import java.awt.Container; import java.net.URL; import javax.swing.*; public class tubiaodeshiyong extends JFrame{ public tubiaodeshiyong() { JFrame f=new JFrame(" 123"); f.setBounds(100,100,500,400); f.setDefaultCloseOperation(EXIT_ON_CLOSE); Container c=f.getContentPane(); JLabel l=new JLabel("这是一个展示图片的标签"); // URL url=tubiaodeshiyong.class.getResource("捕获.PNG"); // Icon icon=new ImageIcon(url);//获取相应路径下的图片文件 Icon icon=new ImageIcon("/小郭同学/src/Swing程序设计/捕获.PNG");//第二种方法:获取相应路径下的图片文件 l.setIcon(icon);//添加图片 c.add(l); f.setVisible(true); } public static void main(String[] args) { new tubiaodeshiyong(); } }
四、常用布局管理器
1、null绝局
使用坐标控制组建的位置
(使用绝对布局的窗口通常是固定大小的,组件位置和形状不会随窗体变化而发生变化)
package Swing程序设计; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class nulljueduibuju extends JFrame{ public nulljueduibuju() { setBounds(100, 100, 100, 100); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c= getContentPane(); c.setLayout(null);//将容器布局设为绝对布局 JButton b1=new JButton("按钮1"); JButton b2=new JButton("按钮2");//创建两个按钮 b1.setBounds(10, 30, 80, 50); b2.setBounds(60, 70, 100, 20); c.add(b1); c.add(b2); setVisible(true); b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new JDIALOG( ); // TODO 自动生成的方法存根 } }); } public static void main(String[] args) { new nulljueduibuju(); // TODO 自动生成的方法存根 } }
2、FlowLayout流布局管理器
从左向右排列,默认居中对齐
像流水一样,向某个方向流动,遇到障碍就折回
package Swing程序设计; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayout extends JFrame{ public FlowLayout() { setBounds(100,100,300,200); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c=getContentPane(); c.setLayout(new java.awt.FlowLayout());//给容器设置流布局 for(int i=1;i<=10;i++) { c.add(new JButton("按钮"+i)); } setVisible(true); } public static void main(String[] args) { new FlowLayout(); // TODO 自动生成的方法存根 } }
3、BorderLayout边界布局
package Swing程序设计; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Container; import javax.swing.*; public class BORDERLAYOUT extends JFrame { public BORDERLAYOUT(){ setBounds(100, 100, 350, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c=getContentPane(); c.setLayout(new BorderLayout()); setVisible(true); JButton b1=new JButton("中"), b2=new JButton("东"), b3=new JButton("西"), b4=new JButton("南"), b5=new JButton("北"); c.add(b1,BorderLayout.CENTER);//中部添加按钮 c.add(b2,BorderLayout.EAST);//东部添加按钮 c.add(b3,BorderLayout.WEST);//西部添加按钮 c.add(b4,BorderLayout.SOUTH);//南部添加按钮 c.add(b5,BorderLayout.NORTH);//北部添加按钮 c.add(new JButton("覆盖"),BorderLayout.CENTER); setVisible(true); } public static void main(String[] args) { new BORDERLAYOUT(); // TODO 自动生成的方法存根 } }
4、GildLayout网格布局
package Swing程序设计; import java.awt.Container; import java.awt.GridLayout; import javax.swing.*; public class GildLayout extends JFrame{ public GildLayout() { setBounds(100, 100, 300, 300); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c=getContentPane(); c.setLayout(new GridLayout(7,3,5,5));//设置网格布局 for(int i=1;i<=20;i++) { c.add(new JButton("按钮"+i)); } setVisible(true); } public static void main(String[] args) { new GildLayout(); // TODO 自动生成的方法存根 } }