目录
一、基本容器
1.1 Jframe
1.2 JDialog
二、基本布局
2.1 AbsoluteLayout
2.2 BorderLayout
2.3 FlowLayout
2.4 GridLayout
三、面板容器
3.1 JPanel
3.2 JScrollPane
四、基本组件
4.1 JLabel带有Icon与ImageIcon
4.2 JButton
4.3 JRadioButton
4.4 JCheckButton
4.5 列表组件
4.5.1 JComboBox
4.5.2 JList
4.6 文本组件
4.6.1 JTextField
4.6.2 JPasswordField
4.6.3 Jtextarea
一、基本容器
1.1 Jframe
package com.zyx.mySwing.myContainers;
import java.awt.Color;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JframeExp1 extends Jframe{
public void createFirstJframe(String title) {
Jframe jframe = new Jframe(title);
Container container = jframe.getContentPane();//获取一个容器
JLabel jl = new JLabel("这是一个Jframe窗体");
// 使标签上的文字居中
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
container.setBackground(Color.blue);
jframe.setVisible(true);
jframe.setSize(200,150);
jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// jframe.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// jframe.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
// jframe.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
}
public static void main(String[] args) {
(new JframeExp1()).createFirstJframe("test Jframe");
}
}
1.2 JDialog
package com.zyx.mySwing.myContainers;
import java.awt.Color;
import java.awt.Container;
import java.awt.frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JDialogwithJframe extends Jframe{
private static final long serialVersionUID = 1L;
public JDialogwithJframe() {
Jframe jframe= new Jframe("Jframe contains JDialog");
Container container = jframe.getContentPane();
JLabel jLabel = new JLabel("这是一个Jframe");
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jLabel);
JButton jb = new JButton("弹出对话框");
jb.setBounds(10,10,100,21);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
(new MyJDialog(JDialogwithJframe.this)).setVisible(true);
}
});
container.add(jb);
jframe.setBackground(Color.cyan);
jframe.setVisible(true);
jframe.setSize(200,150);
jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class MyJDialog extends JDialog{
public MyJDialog(frame frame) {
super(frame,"myfirst JDialog",true);
Container container = getContentPane();
JLabel jl = new JLabel("这是一个JDialog");
container.add(jl);
// this.setVisible(true);
this.setBounds(120,120,100,100);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
public static void main(String[] args) {
new JDialogwithJframe();
}
}
二、基本布局
2.1 AbsoluteLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class AbsoluteLayout extends Jframe{
public AbsoluteLayout() {
setTitle("本窗体使用绝对布局");
setBounds(100, 100, 500, 500);
setLayout(null);
Container container = getContentPane();
JButton jb1 = new JButton("按钮1");
JButton jb2 = new JButton("按钮2");
jb1.setBounds(110, 110, 100, 20);
jb2.setBounds(110, 140, 100, 20);
container.add(jb1);
container.add(jb2);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new AbsoluteLayout();
}
}
2.2 BorderLayout
package com.zyx.mySwing.myLayout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class BorderLayoutTest extends Jframe{
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
public BorderLayoutTest() {
setTitle("这个窗体使用边界布局管理器");
Container container =getContentPane();
setLayout(new BorderLayout());
for(int i=0;i
2.3 FlowLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class FlowLayoutTest extends Jframe{
public FlowLayoutTest() {
setTitle("本窗口使用流布局管理器");
Container container = getContentPane();
setLayout(new FlowLayout(1,10,10));
for(int i=0;i<5;i++) {
container.add(new JButton("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FlowLayoutTest();
}
}
2.4 GridLayout
package com.zyx.mySwing.myLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class GridLayoutTest extends Jframe{
public GridLayoutTest() {
Container container = getContentPane();
setLayout(new GridLayout(7,3,5,5));
for(int i=0;i<20;i++) {
container.add(new Button("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GridLayoutTest();
}
}
三、面板容器
3.1 JPanel
package com.zyx.mySwing.myPane;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JPanelTest extends Jframe{
public JPanelTest() {
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
Container container = getContentPane();
container.setLayout(new GridLayout(2,1,10,10));
JPanel jp1 = new JPanel(new GridLayout(1,3,10,10));
JPanel jp2 = new JPanel(new BorderLayout());
JPanel jp3 = new JPanel(new FlowLayout(1,10,10));
JPanel jp4 = new JPanel(new GridLayout(2,1,10,10));
for(int i=0;i<3;i++) {
jp1.add(new JButton("button"+i));
}
for(int i=0;i
3.2 JScrollPane
package com.zyx.mySwing.myPane;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JScrollPaneTest extends Jframe{
public JScrollPaneTest() {
Container container = getContentPane();// 创建容器
setLayout(new GridLayout(1,3,10,10));
Jtextarea jta = new Jtextarea(100,1000);// 创建文本区域组件
JScrollPane jsp = new JScrollPane(jta);
container.add(jsp);
container.add(new JButton("Center"));
container.add(new JButton("Right"));
setTitle("带滚动条的文字编译器");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollPaneTest();
}
}
四、基本组件
4.1 JLabel带有Icon与ImageIcon
package com.zyx.mySwing.myComponents;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JLabelwithIcon implements Icon{
private int width,height;//图标宽高
public JLabelwithIcon(int w,int h) {
this.width = w;this.height=h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x, y, width, height);//绘制一个圆形图标
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
public static void main(String[] args) {
JLabelwithIcon icon = new JLabelwithIcon(15, 15);
JLabel jl = new JLabel("测试",icon,SwingConstants.CENTER);
Jframe jf = new Jframe();
Container container = jf.getContentPane();
container.add(jl);
jf.setBackground(Color.cyan);
jf.setVisible(true);
jf.setSize(200,150);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class JLabelwithImageIcon extends Jframe{
public JLabelwithImageIcon() {
Container container = getContentPane();// 创建一个容器
JLabel jl = new JLabel("这是一个Jframe",JLabel.CENTER);// 创建一个标签
URL url = JLabelwithImageIcon.class.getResource("m1.png");// 获取图片所在URL
ImageIcon imageicon = new ImageIcon(url);// 实例化Icon对象
Image image = imageicon.getImage();// 获取图标图片
image = image.getScaledInstance(30, 30, Image.SCALE_DEFAULT);// 将图标图片给缩放一下
imageicon.setImage(image);// 获取图片
jl.setIcon(imageicon); // 设置 图标位置为中间
// jl.setHorizontalAlignment(SwingConstants.CENTER); // 设置标签文本水平居中
jl.setOpaque(true);// 设置标签为不透明
container.add(jl);// 将标签添加到容器
setSize(250,100);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JLabelwithImageIcon();
}
}
4.2 JButton
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
//import sun.awt.www.content.image.jpeg;
public class JButtonTest extends Jframe{
public JButtonTest() {
URL url = JLabelwithImageIcon.class.getResource("m1.png");//获取图片路径
ImageIcon imageicon = new ImageIcon(url);// 设置图片标签
setLayout(new GridLayout(3,2,5,5));// 设置布局
Container container = getContentPane();
for(int i=0;i<5;i++) {
Image image = imageicon.getImage();
image = image.getScaledInstance(30, 30, Image.SCALE_REPLICATE);
imageicon.setImage(image);
JButton jb = new JButton("button"+i,imageicon);
container.add(jb);
if(i%2==0) jb.setEnabled(false);// 设置其中一些按钮不可用
}
JButton jb = new JButton();// 实例化一个没有文字与图片的按钮
jb.setMaximumSize(new Dimension(30,30));// 设置按钮与图片相同大小
jb.setIcon(imageicon); // 为按钮设置图标
jb.setHideActionText(true);
jb.setToolTipText("图片按钮");// 设置按钮提示为文字
jb.setBorderPainted(false); // 设置按钮边界不显示
jb.addActionListener(new ActionListener() {//为按钮添加监听事件
public void actionPerformed(ActionEvent e) {
// 弹出确认对话框
JOptionPane.showMessageDialog(null, "弹出对话框");
}
});
container.add(jb); // 将按钮添加到容器中
setVisible(true);
setSize(500,500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonTest();
}
}
4.3 JRadioButton
4.4 JCheckButton
package com.zyx.mySwing.myComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JCheckBoxTest extends Jframe{
private static final long serialVersionUID = 1L;
private JPanel jp1 = new JPanel();
private JPanel jp2 = new JPanel();
private Jtextarea jta = new Jtextarea(5,15); // 创建文本域
private JCheckBox jc1 = new JCheckBox("1");
private JCheckBox jc2 = new JCheckBox("2");
private JCheckBox jc3 = new JCheckBox("3");
private JCheckBox[] jcs = {jc1,jc2,jc3};
public JCheckBoxTest() {
Container container = getContentPane();
container.setLayout(new BorderLayout());
final JScrollPane sp = new JScrollPane(jta); // 文本域添加到滚动面板
jp1.add(sp);
container.add(jp1,BorderLayout.NORTH);
container.add(jp2,BorderLayout.SOUTH);
jp2 = jpadd(jp2, jc1, 1);
jp2 = jpadd(jp2, jc2, 2);
jp2 = jpadd(jp2, jc3, 3);
setSize(300,200);
setVisible(true);
setTitle("复选框的使用");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private JPanel jpadd(JPanel jp,JCheckBox jc,int num) {
jp.add(jc);
jc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(jc.isSelected()){
jta.append("复选框 "+num+" 被选中n");
}
}
});
return jp;
}
public static void main(String[] args) {
new JCheckBoxTest();
}
}
4.5 列表组件
4.5.1 JComboBox
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JComboBoxTest extends Jframe{
class MyComboBox extends AbstractListModel implements ComboBoxModel{
String selectedItem = null;
String[] items = {"3","2","张三李四","张三李四"};
@Override // 获取下拉列表框中的姓名
public int getSize() {return items.length;}
@Override // 根据索引返回值
public String getElementAt(int index) {return items[index];}
@Override // 设置下拉列表框被选中项目
public void setSelectedItem(Object anItem) {selectedItem = (String)anItem;}
@Override // 获取下拉列表框中的项目
public Object getSelectedItem() {return selectedItem;}
}
private JComboBox jc = new JComboBox<>(new MyComboBox());// 这是JDK7的新特性
private JLabel jl = new JLabel("选择正确选项");
private JPanel jp = new JPanel();
public JComboBoxTest() {
Container container = getContentPane();// 创建容器
setLayout(new FlowLayout());
container.add(jl);
container.add(jc);
setSize(300,300);
setVisible(true);
setTitle("下拉框列表测试");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JComboBoxTest();
}
}
4.5.2 JList
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;
import javax.swing.Jframe;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
public class JListTest extends Jframe{
public JListTest() {
Container container = getContentPane();//创建容器
container.setLayout(null);
JList jl = new JList(new MyListModel()); // 此处用了JDK7的新特性
JScrollPane jsp = new JScrollPane(jl); // 一个滚动面板中加入一个列表框
jsp.setBounds(10, 10, 100, 100);// 设置滚动面板
container.add(jsp); // 容器加入滚动面板
final String[] elements = {"a","b","c","项目1","项目二","项目三"};
final DefaultListModel jlm = new DefaultListModel();
final JList jl2 = new JList(jlm); // 创建一个列表框
for(int i=0;i{ // 继承抽象类AbstractListModel
private String[] items = {"项目1","项目二","项目三","a","b","c"};
public int getSize() {return items.length;} // 重写getSize
public String getElementAt(int x) { // 重写getElementAt
if (x
4.6 文本组件
4.6.1 JTextField
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class JTextFieldTest extends Jframe{
public JTextFieldTest() {
final JTextField jtf = new JTextField("aaa",20);
final JButton jb = new JButton("Clear");
jtf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText("触发事件"); // 设置文本框的值
}
});
// jtf.setSize(100,20);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText(""); // 将文本框置空
jtf.requestFocus(); //焦点回到文本框
}
});
// jb.setSize(100, 20);
Container container = getContentPane();
setLayout(new FlowLayout());
container.add(jtf);
container.add(jb);
setSize(250,100);
setVisible(true);
setTitle("测试文本框JTextField");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTextFieldTest();
}
}
4.6.2 JPasswordField
4.6.3 Jtextarea
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JtextareaTest extends Jframe{
private static final long serialVersionUID = 1L;
public JtextareaTest(){
setSize(200,100);
setTitle("定义自动换行的文本域");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp=getContentPane();
Jtextarea jt=new Jtextarea("文本域",6,6);
jt.setLineWrap(true);//可以自动换行
cp.add(jt);
setVisible(true);
}
public static void main(String[] args) {
new JtextareaTest();
}
}
package com.zyx.mySwing.myContainers;
import java.awt.Color;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JframeExp1 extends Jframe{
public void createFirstJframe(String title) {
Jframe jframe = new Jframe(title);
Container container = jframe.getContentPane();//获取一个容器
JLabel jl = new JLabel("这是一个Jframe窗体");
// 使标签上的文字居中
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
container.setBackground(Color.blue);
jframe.setVisible(true);
jframe.setSize(200,150);
jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// jframe.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// jframe.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
// jframe.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
}
public static void main(String[] args) {
(new JframeExp1()).createFirstJframe("test Jframe");
}
}
1.2 JDialog
package com.zyx.mySwing.myContainers;
import java.awt.Color;
import java.awt.Container;
import java.awt.frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JDialogwithJframe extends Jframe{
private static final long serialVersionUID = 1L;
public JDialogwithJframe() {
Jframe jframe= new Jframe("Jframe contains JDialog");
Container container = jframe.getContentPane();
JLabel jLabel = new JLabel("这是一个Jframe");
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jLabel);
JButton jb = new JButton("弹出对话框");
jb.setBounds(10,10,100,21);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
(new MyJDialog(JDialogwithJframe.this)).setVisible(true);
}
});
container.add(jb);
jframe.setBackground(Color.cyan);
jframe.setVisible(true);
jframe.setSize(200,150);
jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class MyJDialog extends JDialog{
public MyJDialog(frame frame) {
super(frame,"myfirst JDialog",true);
Container container = getContentPane();
JLabel jl = new JLabel("这是一个JDialog");
container.add(jl);
// this.setVisible(true);
this.setBounds(120,120,100,100);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
public static void main(String[] args) {
new JDialogwithJframe();
}
}
二、基本布局
2.1 AbsoluteLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class AbsoluteLayout extends Jframe{
public AbsoluteLayout() {
setTitle("本窗体使用绝对布局");
setBounds(100, 100, 500, 500);
setLayout(null);
Container container = getContentPane();
JButton jb1 = new JButton("按钮1");
JButton jb2 = new JButton("按钮2");
jb1.setBounds(110, 110, 100, 20);
jb2.setBounds(110, 140, 100, 20);
container.add(jb1);
container.add(jb2);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new AbsoluteLayout();
}
}
2.2 BorderLayout
package com.zyx.mySwing.myLayout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class BorderLayoutTest extends Jframe{
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
public BorderLayoutTest() {
setTitle("这个窗体使用边界布局管理器");
Container container =getContentPane();
setLayout(new BorderLayout());
for(int i=0;i
2.3 FlowLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class FlowLayoutTest extends Jframe{
public FlowLayoutTest() {
setTitle("本窗口使用流布局管理器");
Container container = getContentPane();
setLayout(new FlowLayout(1,10,10));
for(int i=0;i<5;i++) {
container.add(new JButton("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FlowLayoutTest();
}
}
2.4 GridLayout
package com.zyx.mySwing.myLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class GridLayoutTest extends Jframe{
public GridLayoutTest() {
Container container = getContentPane();
setLayout(new GridLayout(7,3,5,5));
for(int i=0;i<20;i++) {
container.add(new Button("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GridLayoutTest();
}
}
三、面板容器
3.1 JPanel
package com.zyx.mySwing.myPane;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JPanelTest extends Jframe{
public JPanelTest() {
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
Container container = getContentPane();
container.setLayout(new GridLayout(2,1,10,10));
JPanel jp1 = new JPanel(new GridLayout(1,3,10,10));
JPanel jp2 = new JPanel(new BorderLayout());
JPanel jp3 = new JPanel(new FlowLayout(1,10,10));
JPanel jp4 = new JPanel(new GridLayout(2,1,10,10));
for(int i=0;i<3;i++) {
jp1.add(new JButton("button"+i));
}
for(int i=0;i
3.2 JScrollPane
package com.zyx.mySwing.myPane;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JScrollPaneTest extends Jframe{
public JScrollPaneTest() {
Container container = getContentPane();// 创建容器
setLayout(new GridLayout(1,3,10,10));
Jtextarea jta = new Jtextarea(100,1000);// 创建文本区域组件
JScrollPane jsp = new JScrollPane(jta);
container.add(jsp);
container.add(new JButton("Center"));
container.add(new JButton("Right"));
setTitle("带滚动条的文字编译器");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollPaneTest();
}
}
四、基本组件
4.1 JLabel带有Icon与ImageIcon
package com.zyx.mySwing.myComponents;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JLabelwithIcon implements Icon{
private int width,height;//图标宽高
public JLabelwithIcon(int w,int h) {
this.width = w;this.height=h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x, y, width, height);//绘制一个圆形图标
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
public static void main(String[] args) {
JLabelwithIcon icon = new JLabelwithIcon(15, 15);
JLabel jl = new JLabel("测试",icon,SwingConstants.CENTER);
Jframe jf = new Jframe();
Container container = jf.getContentPane();
container.add(jl);
jf.setBackground(Color.cyan);
jf.setVisible(true);
jf.setSize(200,150);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class JLabelwithImageIcon extends Jframe{
public JLabelwithImageIcon() {
Container container = getContentPane();// 创建一个容器
JLabel jl = new JLabel("这是一个Jframe",JLabel.CENTER);// 创建一个标签
URL url = JLabelwithImageIcon.class.getResource("m1.png");// 获取图片所在URL
ImageIcon imageicon = new ImageIcon(url);// 实例化Icon对象
Image image = imageicon.getImage();// 获取图标图片
image = image.getScaledInstance(30, 30, Image.SCALE_DEFAULT);// 将图标图片给缩放一下
imageicon.setImage(image);// 获取图片
jl.setIcon(imageicon); // 设置 图标位置为中间
// jl.setHorizontalAlignment(SwingConstants.CENTER); // 设置标签文本水平居中
jl.setOpaque(true);// 设置标签为不透明
container.add(jl);// 将标签添加到容器
setSize(250,100);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JLabelwithImageIcon();
}
}
4.2 JButton
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
//import sun.awt.www.content.image.jpeg;
public class JButtonTest extends Jframe{
public JButtonTest() {
URL url = JLabelwithImageIcon.class.getResource("m1.png");//获取图片路径
ImageIcon imageicon = new ImageIcon(url);// 设置图片标签
setLayout(new GridLayout(3,2,5,5));// 设置布局
Container container = getContentPane();
for(int i=0;i<5;i++) {
Image image = imageicon.getImage();
image = image.getScaledInstance(30, 30, Image.SCALE_REPLICATE);
imageicon.setImage(image);
JButton jb = new JButton("button"+i,imageicon);
container.add(jb);
if(i%2==0) jb.setEnabled(false);// 设置其中一些按钮不可用
}
JButton jb = new JButton();// 实例化一个没有文字与图片的按钮
jb.setMaximumSize(new Dimension(30,30));// 设置按钮与图片相同大小
jb.setIcon(imageicon); // 为按钮设置图标
jb.setHideActionText(true);
jb.setToolTipText("图片按钮");// 设置按钮提示为文字
jb.setBorderPainted(false); // 设置按钮边界不显示
jb.addActionListener(new ActionListener() {//为按钮添加监听事件
public void actionPerformed(ActionEvent e) {
// 弹出确认对话框
JOptionPane.showMessageDialog(null, "弹出对话框");
}
});
container.add(jb); // 将按钮添加到容器中
setVisible(true);
setSize(500,500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonTest();
}
}
4.3 JRadioButton
4.4 JCheckButton
package com.zyx.mySwing.myComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JCheckBoxTest extends Jframe{
private static final long serialVersionUID = 1L;
private JPanel jp1 = new JPanel();
private JPanel jp2 = new JPanel();
private Jtextarea jta = new Jtextarea(5,15); // 创建文本域
private JCheckBox jc1 = new JCheckBox("1");
private JCheckBox jc2 = new JCheckBox("2");
private JCheckBox jc3 = new JCheckBox("3");
private JCheckBox[] jcs = {jc1,jc2,jc3};
public JCheckBoxTest() {
Container container = getContentPane();
container.setLayout(new BorderLayout());
final JScrollPane sp = new JScrollPane(jta); // 文本域添加到滚动面板
jp1.add(sp);
container.add(jp1,BorderLayout.NORTH);
container.add(jp2,BorderLayout.SOUTH);
jp2 = jpadd(jp2, jc1, 1);
jp2 = jpadd(jp2, jc2, 2);
jp2 = jpadd(jp2, jc3, 3);
setSize(300,200);
setVisible(true);
setTitle("复选框的使用");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private JPanel jpadd(JPanel jp,JCheckBox jc,int num) {
jp.add(jc);
jc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(jc.isSelected()){
jta.append("复选框 "+num+" 被选中n");
}
}
});
return jp;
}
public static void main(String[] args) {
new JCheckBoxTest();
}
}
4.5 列表组件
4.5.1 JComboBox
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JComboBoxTest extends Jframe{
class MyComboBox extends AbstractListModel implements ComboBoxModel{
String selectedItem = null;
String[] items = {"3","2","张三李四","张三李四"};
@Override // 获取下拉列表框中的姓名
public int getSize() {return items.length;}
@Override // 根据索引返回值
public String getElementAt(int index) {return items[index];}
@Override // 设置下拉列表框被选中项目
public void setSelectedItem(Object anItem) {selectedItem = (String)anItem;}
@Override // 获取下拉列表框中的项目
public Object getSelectedItem() {return selectedItem;}
}
private JComboBox jc = new JComboBox<>(new MyComboBox());// 这是JDK7的新特性
private JLabel jl = new JLabel("选择正确选项");
private JPanel jp = new JPanel();
public JComboBoxTest() {
Container container = getContentPane();// 创建容器
setLayout(new FlowLayout());
container.add(jl);
container.add(jc);
setSize(300,300);
setVisible(true);
setTitle("下拉框列表测试");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JComboBoxTest();
}
}
4.5.2 JList
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;
import javax.swing.Jframe;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
public class JListTest extends Jframe{
public JListTest() {
Container container = getContentPane();//创建容器
container.setLayout(null);
JList jl = new JList(new MyListModel()); // 此处用了JDK7的新特性
JScrollPane jsp = new JScrollPane(jl); // 一个滚动面板中加入一个列表框
jsp.setBounds(10, 10, 100, 100);// 设置滚动面板
container.add(jsp); // 容器加入滚动面板
final String[] elements = {"a","b","c","项目1","项目二","项目三"};
final DefaultListModel jlm = new DefaultListModel();
final JList jl2 = new JList(jlm); // 创建一个列表框
for(int i=0;i{ // 继承抽象类AbstractListModel
private String[] items = {"项目1","项目二","项目三","a","b","c"};
public int getSize() {return items.length;} // 重写getSize
public String getElementAt(int x) { // 重写getElementAt
if (x
4.6 文本组件
4.6.1 JTextField
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class JTextFieldTest extends Jframe{
public JTextFieldTest() {
final JTextField jtf = new JTextField("aaa",20);
final JButton jb = new JButton("Clear");
jtf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText("触发事件"); // 设置文本框的值
}
});
// jtf.setSize(100,20);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText(""); // 将文本框置空
jtf.requestFocus(); //焦点回到文本框
}
});
// jb.setSize(100, 20);
Container container = getContentPane();
setLayout(new FlowLayout());
container.add(jtf);
container.add(jb);
setSize(250,100);
setVisible(true);
setTitle("测试文本框JTextField");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTextFieldTest();
}
}
4.6.2 JPasswordField
4.6.3 Jtextarea
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JtextareaTest extends Jframe{
private static final long serialVersionUID = 1L;
public JtextareaTest(){
setSize(200,100);
setTitle("定义自动换行的文本域");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp=getContentPane();
Jtextarea jt=new Jtextarea("文本域",6,6);
jt.setLineWrap(true);//可以自动换行
cp.add(jt);
setVisible(true);
}
public static void main(String[] args) {
new JtextareaTest();
}
}
2.1 AbsoluteLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class AbsoluteLayout extends Jframe{
public AbsoluteLayout() {
setTitle("本窗体使用绝对布局");
setBounds(100, 100, 500, 500);
setLayout(null);
Container container = getContentPane();
JButton jb1 = new JButton("按钮1");
JButton jb2 = new JButton("按钮2");
jb1.setBounds(110, 110, 100, 20);
jb2.setBounds(110, 140, 100, 20);
container.add(jb1);
container.add(jb2);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new AbsoluteLayout();
}
}
2.2 BorderLayout
package com.zyx.mySwing.myLayout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class BorderLayoutTest extends Jframe{
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
public BorderLayoutTest() {
setTitle("这个窗体使用边界布局管理器");
Container container =getContentPane();
setLayout(new BorderLayout());
for(int i=0;i
2.3 FlowLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class FlowLayoutTest extends Jframe{
public FlowLayoutTest() {
setTitle("本窗口使用流布局管理器");
Container container = getContentPane();
setLayout(new FlowLayout(1,10,10));
for(int i=0;i<5;i++) {
container.add(new JButton("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FlowLayoutTest();
}
}
2.4 GridLayout
package com.zyx.mySwing.myLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class GridLayoutTest extends Jframe{
public GridLayoutTest() {
Container container = getContentPane();
setLayout(new GridLayout(7,3,5,5));
for(int i=0;i<20;i++) {
container.add(new Button("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GridLayoutTest();
}
}
三、面板容器
3.1 JPanel
package com.zyx.mySwing.myPane;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JPanelTest extends Jframe{
public JPanelTest() {
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
Container container = getContentPane();
container.setLayout(new GridLayout(2,1,10,10));
JPanel jp1 = new JPanel(new GridLayout(1,3,10,10));
JPanel jp2 = new JPanel(new BorderLayout());
JPanel jp3 = new JPanel(new FlowLayout(1,10,10));
JPanel jp4 = new JPanel(new GridLayout(2,1,10,10));
for(int i=0;i<3;i++) {
jp1.add(new JButton("button"+i));
}
for(int i=0;i
3.2 JScrollPane
package com.zyx.mySwing.myPane;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JScrollPaneTest extends Jframe{
public JScrollPaneTest() {
Container container = getContentPane();// 创建容器
setLayout(new GridLayout(1,3,10,10));
Jtextarea jta = new Jtextarea(100,1000);// 创建文本区域组件
JScrollPane jsp = new JScrollPane(jta);
container.add(jsp);
container.add(new JButton("Center"));
container.add(new JButton("Right"));
setTitle("带滚动条的文字编译器");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollPaneTest();
}
}
四、基本组件
4.1 JLabel带有Icon与ImageIcon
package com.zyx.mySwing.myComponents;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JLabelwithIcon implements Icon{
private int width,height;//图标宽高
public JLabelwithIcon(int w,int h) {
this.width = w;this.height=h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x, y, width, height);//绘制一个圆形图标
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
public static void main(String[] args) {
JLabelwithIcon icon = new JLabelwithIcon(15, 15);
JLabel jl = new JLabel("测试",icon,SwingConstants.CENTER);
Jframe jf = new Jframe();
Container container = jf.getContentPane();
container.add(jl);
jf.setBackground(Color.cyan);
jf.setVisible(true);
jf.setSize(200,150);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class JLabelwithImageIcon extends Jframe{
public JLabelwithImageIcon() {
Container container = getContentPane();// 创建一个容器
JLabel jl = new JLabel("这是一个Jframe",JLabel.CENTER);// 创建一个标签
URL url = JLabelwithImageIcon.class.getResource("m1.png");// 获取图片所在URL
ImageIcon imageicon = new ImageIcon(url);// 实例化Icon对象
Image image = imageicon.getImage();// 获取图标图片
image = image.getScaledInstance(30, 30, Image.SCALE_DEFAULT);// 将图标图片给缩放一下
imageicon.setImage(image);// 获取图片
jl.setIcon(imageicon); // 设置 图标位置为中间
// jl.setHorizontalAlignment(SwingConstants.CENTER); // 设置标签文本水平居中
jl.setOpaque(true);// 设置标签为不透明
container.add(jl);// 将标签添加到容器
setSize(250,100);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JLabelwithImageIcon();
}
}
4.2 JButton
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
//import sun.awt.www.content.image.jpeg;
public class JButtonTest extends Jframe{
public JButtonTest() {
URL url = JLabelwithImageIcon.class.getResource("m1.png");//获取图片路径
ImageIcon imageicon = new ImageIcon(url);// 设置图片标签
setLayout(new GridLayout(3,2,5,5));// 设置布局
Container container = getContentPane();
for(int i=0;i<5;i++) {
Image image = imageicon.getImage();
image = image.getScaledInstance(30, 30, Image.SCALE_REPLICATE);
imageicon.setImage(image);
JButton jb = new JButton("button"+i,imageicon);
container.add(jb);
if(i%2==0) jb.setEnabled(false);// 设置其中一些按钮不可用
}
JButton jb = new JButton();// 实例化一个没有文字与图片的按钮
jb.setMaximumSize(new Dimension(30,30));// 设置按钮与图片相同大小
jb.setIcon(imageicon); // 为按钮设置图标
jb.setHideActionText(true);
jb.setToolTipText("图片按钮");// 设置按钮提示为文字
jb.setBorderPainted(false); // 设置按钮边界不显示
jb.addActionListener(new ActionListener() {//为按钮添加监听事件
public void actionPerformed(ActionEvent e) {
// 弹出确认对话框
JOptionPane.showMessageDialog(null, "弹出对话框");
}
});
container.add(jb); // 将按钮添加到容器中
setVisible(true);
setSize(500,500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonTest();
}
}
4.3 JRadioButton
4.4 JCheckButton
package com.zyx.mySwing.myComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JCheckBoxTest extends Jframe{
private static final long serialVersionUID = 1L;
private JPanel jp1 = new JPanel();
private JPanel jp2 = new JPanel();
private Jtextarea jta = new Jtextarea(5,15); // 创建文本域
private JCheckBox jc1 = new JCheckBox("1");
private JCheckBox jc2 = new JCheckBox("2");
private JCheckBox jc3 = new JCheckBox("3");
private JCheckBox[] jcs = {jc1,jc2,jc3};
public JCheckBoxTest() {
Container container = getContentPane();
container.setLayout(new BorderLayout());
final JScrollPane sp = new JScrollPane(jta); // 文本域添加到滚动面板
jp1.add(sp);
container.add(jp1,BorderLayout.NORTH);
container.add(jp2,BorderLayout.SOUTH);
jp2 = jpadd(jp2, jc1, 1);
jp2 = jpadd(jp2, jc2, 2);
jp2 = jpadd(jp2, jc3, 3);
setSize(300,200);
setVisible(true);
setTitle("复选框的使用");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private JPanel jpadd(JPanel jp,JCheckBox jc,int num) {
jp.add(jc);
jc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(jc.isSelected()){
jta.append("复选框 "+num+" 被选中n");
}
}
});
return jp;
}
public static void main(String[] args) {
new JCheckBoxTest();
}
}
4.5 列表组件
4.5.1 JComboBox
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JComboBoxTest extends Jframe{
class MyComboBox extends AbstractListModel implements ComboBoxModel{
String selectedItem = null;
String[] items = {"3","2","张三李四","张三李四"};
@Override // 获取下拉列表框中的姓名
public int getSize() {return items.length;}
@Override // 根据索引返回值
public String getElementAt(int index) {return items[index];}
@Override // 设置下拉列表框被选中项目
public void setSelectedItem(Object anItem) {selectedItem = (String)anItem;}
@Override // 获取下拉列表框中的项目
public Object getSelectedItem() {return selectedItem;}
}
private JComboBox jc = new JComboBox<>(new MyComboBox());// 这是JDK7的新特性
private JLabel jl = new JLabel("选择正确选项");
private JPanel jp = new JPanel();
public JComboBoxTest() {
Container container = getContentPane();// 创建容器
setLayout(new FlowLayout());
container.add(jl);
container.add(jc);
setSize(300,300);
setVisible(true);
setTitle("下拉框列表测试");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JComboBoxTest();
}
}
4.5.2 JList
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;
import javax.swing.Jframe;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
public class JListTest extends Jframe{
public JListTest() {
Container container = getContentPane();//创建容器
container.setLayout(null);
JList jl = new JList(new MyListModel()); // 此处用了JDK7的新特性
JScrollPane jsp = new JScrollPane(jl); // 一个滚动面板中加入一个列表框
jsp.setBounds(10, 10, 100, 100);// 设置滚动面板
container.add(jsp); // 容器加入滚动面板
final String[] elements = {"a","b","c","项目1","项目二","项目三"};
final DefaultListModel jlm = new DefaultListModel();
final JList jl2 = new JList(jlm); // 创建一个列表框
for(int i=0;i{ // 继承抽象类AbstractListModel
private String[] items = {"项目1","项目二","项目三","a","b","c"};
public int getSize() {return items.length;} // 重写getSize
public String getElementAt(int x) { // 重写getElementAt
if (x
4.6 文本组件
4.6.1 JTextField
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class JTextFieldTest extends Jframe{
public JTextFieldTest() {
final JTextField jtf = new JTextField("aaa",20);
final JButton jb = new JButton("Clear");
jtf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText("触发事件"); // 设置文本框的值
}
});
// jtf.setSize(100,20);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText(""); // 将文本框置空
jtf.requestFocus(); //焦点回到文本框
}
});
// jb.setSize(100, 20);
Container container = getContentPane();
setLayout(new FlowLayout());
container.add(jtf);
container.add(jb);
setSize(250,100);
setVisible(true);
setTitle("测试文本框JTextField");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTextFieldTest();
}
}
4.6.2 JPasswordField
4.6.3 Jtextarea
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JtextareaTest extends Jframe{
private static final long serialVersionUID = 1L;
public JtextareaTest(){
setSize(200,100);
setTitle("定义自动换行的文本域");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp=getContentPane();
Jtextarea jt=new Jtextarea("文本域",6,6);
jt.setLineWrap(true);//可以自动换行
cp.add(jt);
setVisible(true);
}
public static void main(String[] args) {
new JtextareaTest();
}
}
package com.zyx.mySwing.myLayout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class BorderLayoutTest extends Jframe{
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
public BorderLayoutTest() {
setTitle("这个窗体使用边界布局管理器");
Container container =getContentPane();
setLayout(new BorderLayout());
for(int i=0;i
2.3 FlowLayout
package com.zyx.mySwing.myLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class FlowLayoutTest extends Jframe{
public FlowLayoutTest() {
setTitle("本窗口使用流布局管理器");
Container container = getContentPane();
setLayout(new FlowLayout(1,10,10));
for(int i=0;i<5;i++) {
container.add(new JButton("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FlowLayoutTest();
}
}
2.4 GridLayout
package com.zyx.mySwing.myLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.Jframe;
import javax.swing.WindowConstants;
public class GridLayoutTest extends Jframe{
public GridLayoutTest() {
Container container = getContentPane();
setLayout(new GridLayout(7,3,5,5));
for(int i=0;i<20;i++) {
container.add(new Button("button"+i));
}
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GridLayoutTest();
}
}
三、面板容器
3.1 JPanel
package com.zyx.mySwing.myPane;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JPanelTest extends Jframe{
public JPanelTest() {
String[] border = {BorderLayout.CENTER,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.NORTH,BorderLayout.SOUTH};
String[] buttonName = {"Center","West","East","North","South"};
Container container = getContentPane();
container.setLayout(new GridLayout(2,1,10,10));
JPanel jp1 = new JPanel(new GridLayout(1,3,10,10));
JPanel jp2 = new JPanel(new BorderLayout());
JPanel jp3 = new JPanel(new FlowLayout(1,10,10));
JPanel jp4 = new JPanel(new GridLayout(2,1,10,10));
for(int i=0;i<3;i++) {
jp1.add(new JButton("button"+i));
}
for(int i=0;i
3.2 JScrollPane
package com.zyx.mySwing.myPane;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JScrollPaneTest extends Jframe{
public JScrollPaneTest() {
Container container = getContentPane();// 创建容器
setLayout(new GridLayout(1,3,10,10));
Jtextarea jta = new Jtextarea(100,1000);// 创建文本区域组件
JScrollPane jsp = new JScrollPane(jta);
container.add(jsp);
container.add(new JButton("Center"));
container.add(new JButton("Right"));
setTitle("带滚动条的文字编译器");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollPaneTest();
}
}
四、基本组件
4.1 JLabel带有Icon与ImageIcon
package com.zyx.mySwing.myComponents;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class JLabelwithIcon implements Icon{
private int width,height;//图标宽高
public JLabelwithIcon(int w,int h) {
this.width = w;this.height=h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x, y, width, height);//绘制一个圆形图标
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
public static void main(String[] args) {
JLabelwithIcon icon = new JLabelwithIcon(15, 15);
JLabel jl = new JLabel("测试",icon,SwingConstants.CENTER);
Jframe jf = new Jframe();
Container container = jf.getContentPane();
container.add(jl);
jf.setBackground(Color.cyan);
jf.setVisible(true);
jf.setSize(200,150);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class JLabelwithImageIcon extends Jframe{
public JLabelwithImageIcon() {
Container container = getContentPane();// 创建一个容器
JLabel jl = new JLabel("这是一个Jframe",JLabel.CENTER);// 创建一个标签
URL url = JLabelwithImageIcon.class.getResource("m1.png");// 获取图片所在URL
ImageIcon imageicon = new ImageIcon(url);// 实例化Icon对象
Image image = imageicon.getImage();// 获取图标图片
image = image.getScaledInstance(30, 30, Image.SCALE_DEFAULT);// 将图标图片给缩放一下
imageicon.setImage(image);// 获取图片
jl.setIcon(imageicon); // 设置 图标位置为中间
// jl.setHorizontalAlignment(SwingConstants.CENTER); // 设置标签文本水平居中
jl.setOpaque(true);// 设置标签为不透明
container.add(jl);// 将标签添加到容器
setSize(250,100);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JLabelwithImageIcon();
}
}
4.2 JButton
package com.zyx.mySwing.myComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
//import sun.awt.www.content.image.jpeg;
public class JButtonTest extends Jframe{
public JButtonTest() {
URL url = JLabelwithImageIcon.class.getResource("m1.png");//获取图片路径
ImageIcon imageicon = new ImageIcon(url);// 设置图片标签
setLayout(new GridLayout(3,2,5,5));// 设置布局
Container container = getContentPane();
for(int i=0;i<5;i++) {
Image image = imageicon.getImage();
image = image.getScaledInstance(30, 30, Image.SCALE_REPLICATE);
imageicon.setImage(image);
JButton jb = new JButton("button"+i,imageicon);
container.add(jb);
if(i%2==0) jb.setEnabled(false);// 设置其中一些按钮不可用
}
JButton jb = new JButton();// 实例化一个没有文字与图片的按钮
jb.setMaximumSize(new Dimension(30,30));// 设置按钮与图片相同大小
jb.setIcon(imageicon); // 为按钮设置图标
jb.setHideActionText(true);
jb.setToolTipText("图片按钮");// 设置按钮提示为文字
jb.setBorderPainted(false); // 设置按钮边界不显示
jb.addActionListener(new ActionListener() {//为按钮添加监听事件
public void actionPerformed(ActionEvent e) {
// 弹出确认对话框
JOptionPane.showMessageDialog(null, "弹出对话框");
}
});
container.add(jb); // 将按钮添加到容器中
setVisible(true);
setSize(500,500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonTest();
}
}
4.3 JRadioButton
4.4 JCheckButton
package com.zyx.mySwing.myComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JCheckBoxTest extends Jframe{
private static final long serialVersionUID = 1L;
private JPanel jp1 = new JPanel();
private JPanel jp2 = new JPanel();
private Jtextarea jta = new Jtextarea(5,15); // 创建文本域
private JCheckBox jc1 = new JCheckBox("1");
private JCheckBox jc2 = new JCheckBox("2");
private JCheckBox jc3 = new JCheckBox("3");
private JCheckBox[] jcs = {jc1,jc2,jc3};
public JCheckBoxTest() {
Container container = getContentPane();
container.setLayout(new BorderLayout());
final JScrollPane sp = new JScrollPane(jta); // 文本域添加到滚动面板
jp1.add(sp);
container.add(jp1,BorderLayout.NORTH);
container.add(jp2,BorderLayout.SOUTH);
jp2 = jpadd(jp2, jc1, 1);
jp2 = jpadd(jp2, jc2, 2);
jp2 = jpadd(jp2, jc3, 3);
setSize(300,200);
setVisible(true);
setTitle("复选框的使用");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private JPanel jpadd(JPanel jp,JCheckBox jc,int num) {
jp.add(jc);
jc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(jc.isSelected()){
jta.append("复选框 "+num+" 被选中n");
}
}
});
return jp;
}
public static void main(String[] args) {
new JCheckBoxTest();
}
}
4.5 列表组件
4.5.1 JComboBox
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class JComboBoxTest extends Jframe{
class MyComboBox extends AbstractListModel implements ComboBoxModel{
String selectedItem = null;
String[] items = {"3","2","张三李四","张三李四"};
@Override // 获取下拉列表框中的姓名
public int getSize() {return items.length;}
@Override // 根据索引返回值
public String getElementAt(int index) {return items[index];}
@Override // 设置下拉列表框被选中项目
public void setSelectedItem(Object anItem) {selectedItem = (String)anItem;}
@Override // 获取下拉列表框中的项目
public Object getSelectedItem() {return selectedItem;}
}
private JComboBox jc = new JComboBox<>(new MyComboBox());// 这是JDK7的新特性
private JLabel jl = new JLabel("选择正确选项");
private JPanel jp = new JPanel();
public JComboBoxTest() {
Container container = getContentPane();// 创建容器
setLayout(new FlowLayout());
container.add(jl);
container.add(jc);
setSize(300,300);
setVisible(true);
setTitle("下拉框列表测试");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JComboBoxTest();
}
}
4.5.2 JList
package com.zyx.mySwing.myComponents.listComponents;
import java.awt.Container;
import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;
import javax.swing.Jframe;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
public class JListTest extends Jframe{
public JListTest() {
Container container = getContentPane();//创建容器
container.setLayout(null);
JList jl = new JList(new MyListModel()); // 此处用了JDK7的新特性
JScrollPane jsp = new JScrollPane(jl); // 一个滚动面板中加入一个列表框
jsp.setBounds(10, 10, 100, 100);// 设置滚动面板
container.add(jsp); // 容器加入滚动面板
final String[] elements = {"a","b","c","项目1","项目二","项目三"};
final DefaultListModel jlm = new DefaultListModel();
final JList jl2 = new JList(jlm); // 创建一个列表框
for(int i=0;i{ // 继承抽象类AbstractListModel
private String[] items = {"项目1","项目二","项目三","a","b","c"};
public int getSize() {return items.length;} // 重写getSize
public String getElementAt(int x) { // 重写getElementAt
if (x
4.6 文本组件
4.6.1 JTextField
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class JTextFieldTest extends Jframe{
public JTextFieldTest() {
final JTextField jtf = new JTextField("aaa",20);
final JButton jb = new JButton("Clear");
jtf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText("触发事件"); // 设置文本框的值
}
});
// jtf.setSize(100,20);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf.setText(""); // 将文本框置空
jtf.requestFocus(); //焦点回到文本框
}
});
// jb.setSize(100, 20);
Container container = getContentPane();
setLayout(new FlowLayout());
container.add(jtf);
container.add(jb);
setSize(250,100);
setVisible(true);
setTitle("测试文本框JTextField");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTextFieldTest();
}
}
4.6.2 JPasswordField
4.6.3 Jtextarea
package com.zyx.mySwing.myComponents.textComponents;
import java.awt.Container;
import javax.swing.Jframe;
import javax.swing.Jtextarea;
import javax.swing.WindowConstants;
public class JtextareaTest extends Jframe{
private static final long serialVersionUID = 1L;
public JtextareaTest(){
setSize(200,100);
setTitle("定义自动换行的文本域");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp=getContentPane();
Jtextarea jt=new Jtextarea("文本域",6,6);
jt.setLineWrap(true);//可以自动换行
cp.add(jt);
setVisible(true);
}
public static void main(String[] args) {
new JtextareaTest();
}
}



