学以致用——Java源码——使用Swing创建用户界面原型

程序功能:

使用Swing控件创建以下用户界面。

三年前没解决的问题,今天终于通过参考SwingSet3中的JButtonDemo界面的源码而解出。用到的核心知识是组合使用FlowLayout和GridLayout实现控件的对齐(alignment)。

参考文章:

吐槽-使用Swing实现的第一个页面,https://blog.csdn.net/hpdlzu80100/article/details/52041032 

运行结果:

代码:

1. 测试类

import javax.swing.JFrame;


public class BlankFrame12_8Test {
	
	   public static void main(String[] args)
	   { 
	      BlankFrame12_8_v2 testFrame = new BlankFrame12_8_v2(); 
	      testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	      testFrame.setSize(568, 200); 
	      testFrame.setVisible(true); 
	   } 

}

2. 实体类 

import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

//Java How to Program, Exercise 12.8
//by pandenghuang@163.com
/**
 * 使用Swing控件创建用户界面
 * 12.8 Create the following GUI. 
 * You do not have to provide any functionality.
 * @author Pandenghuang@163.com
 * @Date Jan 10, 2019, 10:30:58 PM
 *
 */
public class BlankFrame12_8_v2 extends JFrame{
	
	//声明界面中的基本控件
	private final JButton okJButton; 	//OK
	private final JButton cancelJButton; //Cancel
	private final JButton helpJButton; 	//Help
	private final JLabel xJLabel; 	//X
	private final JLabel yJLabel; 	//Y
	private final JTextField xJTextField; 	//X field
	private final JTextField yJTextField; 	//Y field
	private final JCheckBox snapToGridJCheckBox; 	//Snap to Grid checkbox
	private final JCheckBox showGridJCheckBox; 	//Show Grid checkbox
	private final JLabel snapToGridJLabel; 	//Snap to Grid
	private final JLabel showGridJLabel; 	//Snap to Grid
	
	//声明容器控件
	private final JPanel leftJPanel;  
	private final JPanel middleJPanel;
	private final JPanel rightJPanel;
	private final JPanel leftSubJPanel1;
	private final JPanel leftSubJPanel2;
	private final JPanel middleSubJPanel1;
	private final JPanel middleSubJPanel2;
	
	

	public BlankFrame12_8_v2 () {
		super("Blank GUI for Java How to Program, exercise 12.8");
		
		setLayout(new FlowLayout(FlowLayout.CENTER,30,20));
		//初始化基本控件
		okJButton = new JButton("OK");
		cancelJButton = new JButton("Cancel") ; //Cancel
		helpJButton = new JButton("Help"); 	//Help
		xJLabel = new JLabel("X"); 	//X
		yJLabel = new JLabel("Y"); 	//Y
		xJTextField = new JTextField(10); 	//X field
		yJTextField = new JTextField(10); 	//X field
		snapToGridJCheckBox = new JCheckBox(); 	//Snap to Grid checkbox
		showGridJCheckBox = new JCheckBox(); 	//Show Grid checkbox
		snapToGridJLabel = new JLabel("Snap to Grid"); 	//Snap to Grid
		showGridJLabel = new JLabel("Show Grid"); 	//Snap to Grid
		
		//初始化容器控件
		leftJPanel = new JPanel();
		middleJPanel = new JPanel();
		rightJPanel = new JPanel();
		leftSubJPanel1 = new JPanel();
		leftSubJPanel2 = new JPanel();
		middleSubJPanel1 = new JPanel();
		middleSubJPanel2 = new JPanel();
		
		//设置容器控件的布局管理器
		
		leftJPanel.setLayout(new FlowLayout(FlowLayout.CENTER,2,6));
		
		GridLayout gridMiddleJPanel = new GridLayout(2,1);
		gridMiddleJPanel.setHgap(1);
		gridMiddleJPanel.setVgap(10);
		middleJPanel.setLayout(gridMiddleJPanel);
		
		GridLayout gridRightJPanel = new GridLayout(3,1);
		gridRightJPanel.setHgap(1);
		gridRightJPanel.setVgap(20);
		rightJPanel.setLayout(gridRightJPanel);
		
		//向容器中填充基本控件
		leftSubJPanel1.setLayout(new FlowLayout(FlowLayout.LEFT,2,5));
		leftSubJPanel1.add(snapToGridJCheckBox);
		leftSubJPanel1.add(snapToGridJLabel);
		leftSubJPanel2.setLayout(new FlowLayout(FlowLayout.LEFT,2,5));
		leftSubJPanel2.add(showGridJCheckBox);
		leftSubJPanel2.add(showGridJLabel);
		
		leftJPanel.setLayout(new GridLayout(2,1));
		leftJPanel.add(leftSubJPanel1);
		leftJPanel.add(leftSubJPanel2);
		
		
		middleSubJPanel1.setLayout(new FlowLayout(FlowLayout.LEFT,10,5));
		middleSubJPanel1.add(xJLabel);
		middleSubJPanel1.add(xJTextField);
		middleSubJPanel2.setLayout(new FlowLayout(FlowLayout.LEFT,10,5));
		middleSubJPanel2.add(yJLabel);
		middleSubJPanel2.add(yJTextField);
		
		GridLayout grid = new GridLayout(2,1);
		grid.setVgap(16);
		middleJPanel.setLayout(grid);
		middleJPanel.add(middleSubJPanel1);
		middleJPanel.add(middleSubJPanel2);
		
		rightJPanel.setLayout(gridRightJPanel);
		rightJPanel.add(okJButton);
		rightJPanel.add(cancelJButton);
		rightJPanel.add(helpJButton);
		
		
		add(leftJPanel);
		add(middleJPanel);
		add(rightJPanel);
		setVisible(true);
		
	}
	

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值