窗口编程之基础编程
窗口编程有许多许多的类和方法,我相信没有人能全部掌握,这种编程只能靠经验以及查资料。
下面是我编写的一个简单的例子,对其中的每句话基本都有解释,不过窗口编程还是要靠自己的积累。
package com.mec.gewei.practice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class MyWindows {
public static final Font topicFont = new Font("微软雅黑",Font.BOLD,32);
public static final Font normalFont = new Font("宋体",Font.PLAIN,16);
public static final Font smallFont = new Font("宋体",Font.PLAIN,12);
public static final int topicFontSize = topicFont.getSize();
public static final int normalFontSize = normalFont.getSize();
public static final int smallFontSize = smallFont.getSize();
public static final Color topicColor = new Color(13, 134, 247);
public static final int PADDING = 5;
private JFrame jfrmMainView;//主界面,即窗口
private JRadioButton jrdbSexMale;//“男”单选框
private JRadioButton jrdbSexFemale;//“女”单选框
public MyWindows() {
initView();
}
private void initView() {
init();
reinit();
}
//初始化
private void init() {
//1.创造一个窗口
jfrmMainView = new JFrame("通用窗口");
//Dimension类,用于设置尺寸,600为外径
jfrmMainView.setSize(new Dimension(600, 400));
//设置自动布局
jfrmMainView.setLocationRelativeTo(null);
//设置窗口关闭时,结束窗口线程
jfrmMainView.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置布局,null代表绝对布局
jfrmMainView.setLayout(null);
//2.设置标题
JLabel jlblTopic = new JLabel("标题",JLabel.CENTER);
//设置字体
jlblTopic.setFont(topicFont);
//设置前景色
jlblTopic.setForeground(topicColor);
jlblTopic.setSize(585,topicFontSize+4);
jlblTopic.setLocation(0,0);
//将jlblTopic加入窗口里
jfrmMainView.add(jlblTopic);
int top = 100;//距离上边界的距离
//设置“姓名”两个字
JLabel jlblName = new JLabel("姓名");
jlblName.setFont(normalFont);
//前两个是组件左上角在容器中的坐标,后两个是组件的宽度和高度。
jlblName.setBounds(100, top, normalFontSize * 2, normalFontSize);
jfrmMainView.add(jlblName);
//设置填写姓名区域,即后面的文本框
JTextField jtxtName = new JTextField();
jtxtName.setFont(normalFont);
jtxtName.setBounds(100 + jlblName.getWidth() + PADDING, top, 200, 20);
jfrmMainView.add(jtxtName);
//每次要设置下一行时,距离上边界的距离就要重新计算
//设置“密码”两个字
top += jlblName.getHeight() + PADDING;
JLabel jlblPassword = new JLabel("密码");
jlblPassword.setFont(normalFont);
jlblPassword.setBounds(100, top, normalFontSize * 2, normalFontSize);
jfrmMainView.add(jlblPassword);
//设置填写密码区域,即后面的文本框
JPasswordField jpswPassword = new JPasswordField();
jpswPassword.setFont(normalFont);
jpswPassword.setBounds(100 + jlblName.getWidth() + PADDING, top, 200, 20);
//设置密码显示符号
jpswPassword.setEchoChar('*');
jfrmMainView.add(jpswPassword);
//设置“性别”两个字
top += jlblName.getHeight() + PADDING;
JLabel jlblSex = new JLabel("性别");
jlblSex.setFont(normalFont);
jlblSex.setBounds(100, top, normalFontSize * 2, normalFontSize);
jfrmMainView.add(jlblSex);
//设置“男”
jrdbSexMale = new JRadioButton("男");
jrdbSexMale.setFont(normalFont);
jrdbSexMale.setBounds(100 + jlblName.getWidth() + PADDING, top, 98, 20);
jfrmMainView.add(jrdbSexMale);
//设置“女”
jrdbSexFemale = new JRadioButton("女");
jrdbSexFemale.setFont(normalFont);
jrdbSexFemale.setBounds(jrdbSexMale.getX() + jrdbSexMale.getWidth() + PADDING, top, 98, 20);
jfrmMainView.add(jrdbSexFemale);
//设置选择性别区域,即单选框
ButtonGroup btgpSex = new ButtonGroup();
btgpSex.add(jrdbSexMale);
btgpSex.add(jrdbSexFemale);
}
//刷新
private void reinit() {
jrdbSexMale.setSelected(true);
}
public void showView() {
jfrmMainView.setVisible(true);
}
}
运行结果: