Swing

  • 标准Swing例子
  • 窗体组件
  • 父窗体:JFrame
  • 子窗体:JPanel
  • 一般常用组件
  • 文字标签:JLable
  • 按钮:JButton
  • 文本框:JTextField
  • 密码输入框:JPassWord
  • 复选框:JCheckBox
  • 下拉列表:JComboBox
  • 单选按钮:JRadioButton
  • 表格:JTable
  • 树状菜单
  • 布局
  • 流布局:FlowLayout
  • 边界布局:BorderLayout
  • 卡片布局:CardLayout
  • 自定义布局器
  • 边框:Border


标准Swing例子

public class Demo1 {
	public static void main(String[] args) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				createGUI();
			}

		});
	}

	private static void createGUI() {
		JFrame jf = new JFrame("Swing Demo");
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭窗口所执行的操作
		jf.setSize(500,800);//设置窗口大小
		//内容面板
		Container con = jf.getContentPane();
		con.setLayout(new FlowLayout());
		
		con.add(new JLabel("hello,world"));//添加文本
		con.add(new JButton("测试"));//添加按钮

		jf.setVisible(true);//设置是否可见
	}
}

窗体组件

父窗体:JFrame

JFrame jf = new JFrame();
//JFrame jf = new JFrame("name");

//添加内容面板
Container con = jf.getContentPane();
con.setLayout(new FlowLayout());

//添加各种组件
con.add(new JLabel("hello,world"));//添加文本
con.add(new JButton("测试"));//添加按钮

jf.setSize(400, 300);//设置大小
jf.setLocationRelativeTo(null);//设置出现的位置:null:中间
jf.setVisible(true);//设置是否可见

子窗体:JPanel

子窗体用来添加各种组件,然后展示在父窗体里

一般常用组件

文字标签:JLable

JLabel jl = new JLabel("标签显示文字");
con.add(jl);
jl.setText("标签显示文字"); //设置文本
jl.setFont(new Font("微软雅黑", 0, 14));//设置字体
jl.setForeground(Color.black);//设置文本颜色
jl.setToolTipText("提示文字");//设置工具提示
jl.setOpaque(true)//设置背景不透明
jl.setBackground(Color)//设置背景色
j1.setPreferredSize(new Dimension(60, 30));//设置标签大小
j1.setHorizontalAlignment(SwingConstants.CENTER);//设置文字在标签内的位置

java swing 开发教程pdf swing学java_自定义布局

按钮:JButton

JButton jb = new JButton("确定");//新建按钮

con.add(jb);//添加进内容面板

jb.addActionListener((e)->{ //使用匿名内部类创建监听器对象,绑定给该按钮
	//点击之后的动作
	});

java swing 开发教程pdf swing学java_自定义布局_02

文本框:JTextField

JLabel lable = new JLabel("姓名:");
JTextField textField = new JTextField(16);// 设置单行文本框
JButton button = new JButton("确定");

textField.setEnabled(true);//设置文本框是否可用
textField.getText();//获取文本框输入的内容

java swing 开发教程pdf swing学java_java swing 开发教程pdf_03

密码输入框:JPassWord

JPasswordField passwordField = new JPasswordField();

String password = new String(passwordField.getPassword());//获取输入的密码

java swing 开发教程pdf swing学java_自定义布局_04

复选框:JCheckBox

JCheckBox jcbox = new JCheckBox("我已阅读并同意");//新建复选框
jcbox.setSelected(true);//设置复选框的选中状态
jcbox.isSelected();//获知复选框是否被选中

java swing 开发教程pdf swing学java_文本框_05

下拉列表:JComboBox

JComboBox<T> box = new JComboBox<>(); //泛型
//添加内容
box.addItem("选项1");
box.addItem("选项2");
box.addItem("选项3");

//按索引访问,下标从0开始
box.getSelectedIndex();//获取选中项的索引
box.setSelectedIndex(anIndex);//设置选中项
box.remove(index);//删除指定下标的索引

//按数据项访问
box.getSelectedItem();//获取选中项
box.setSelectedItem(anObject);//设置选中项
box.remove(comp);//删除指定项

java swing 开发教程pdf swing学java_文本框_06

单选按钮:JRadioButton

JRadioButton rdbtnNewRadioButton = new JRadioButton("男",true);
JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("女");

ButtonGroup group = new ButtonGroup();//关联, 添加JRadioButton到ButtonGroup中,实现单选效果
group.add(rdbtnNewRadioButton);
group.add(rdbtnNewRadioButton_1);

//获取选中的按钮的值
String str = "null";
Enumeration<AbstractButton> elements = group.getElements();
	while (elements.hasMoreElements()) {
		AbstractButton btn = elements.nextElement();
		if (btn.isSelected()) {
		str = btn.getText();
		break;
	}
}

java swing 开发教程pdf swing学java_文本框_07

表格:JTable

DefaultTableModel dtm = new DefaultTableModel();// 设置默认的表控制模型
		JTable tbale = new JTable(dtm);// 把根据表控制模型新建一个表
		JScrollPane js = new JScrollPane(tbale);// 把表添加到带滚动条的面板中
		add(js);
		// 添加列名
		dtm.addColumn("ID");
		dtm.addColumn("name");
//		dtm.addColumn("ID", new Object[] { 1, 2, 3, 4 });// 添加列名,列值集合(对象数组,Vector均可)

		Object[] o = new Object[] { "0001", 2 };
//		添加值
		dtm.addRow(o);

java swing 开发教程pdf swing学java_java_08

树状菜单

DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");// 创建根节点
		DefaultMutableTreeNode r1 = new DefaultMutableTreeNode("叶节点1");// 创建叶节点1
		DefaultMutableTreeNode r2 = new DefaultMutableTreeNode("叶节点2");// 创建叶节点2
		DefaultMutableTreeNode r3 = new DefaultMutableTreeNode("叶节点3");// 创建叶节点3
		DefaultMutableTreeNode r4 = new DefaultMutableTreeNode("叶节点4");// 创建叶节点4
		root.add(r1);
		root.add(r2);
		root.add(r3);
		root.add(r4);
		JTree j = new JTree(root);
		//添加节点点击事件
tree.addTreeSelectionListener((e) -> {
			DefaultMutableTreeNode node = (DefaultMutableTreeNode) 					tree.getLastSelectedPathComponent();
			if (node.toString().equals("节点名")) {
				//节点点击事件
			}
		});

java swing 开发教程pdf swing学java_复选框_09

布局

关于布局最好用WindowBuilder来做,敲代码太TM累了

流布局:FlowLayout

con.setLayout("布局");//设置布局方式

FlowLayout f = new FlowLayout()//流布局

边界布局:BorderLayout

BorderLayout b = new BorderLAyout();

卡片布局:CardLayout

方式1:
//把一个JPanel放进另一个JPanel

Container con = jf.getContentPane();//设置内容面板
con.setLayout(new BorderLayout());//使用边界布局
JPanel carde = new JPanel();//新建JPanel
con.add(carde, BorderLayout.CENTER);//把carde放进内容面板

carde.add(home, "系统主界面");//把一个JPanel放进另一个JPanel

CardLayout manager = carde.getLayout();//获取父容器的布局器
manager.show(carde, name);//把父容器的页面切换成给定界面


方式2:
con.setLayout(new CardLayout());//把顶层容器JFrame的布局设置为卡片布局
con.add(carde);//把JPanel添加进顶层容器
CardLayout layout = (CardLayout)con.getLayout();//获取卡片布局器
layout.show(jf, name);;//切换页面

自定义布局器

方式1:
//自定义布局器,实现LayoutManager接口,并重写其中的layoutContainer(Container parent)方法

方式2:
//自定义抽象类,实现layoutManager接口,补上其他方法,不重写layoutContainer(Container parent),
//需要自定义布局器的时候,只需要继承自定义的抽象类就好了

边框:Border

Border b1 = new LineBorder(Color.BLUE);//新建一个线型边框
Border b1 = new LineBorder(Color.BLUE,4);//新建一个线型边框,4像素
Border b1 = new LineBorder(Color.BLUE,4,true);新建一个线型边框,4,像素,边框炜圆角