首先:采用什么技术实现
java语言可以使用awt 和swing等技术实现图形界面
推荐使用Swing,因为Swing比AWT更专业,更漂亮,组件更丰富,功能更强大。
2 其次:分析采用什么布局
边界布局BorderLayout,配合表格布局GridLayout,既简单又美观
3 最后:分析需求中需要用的组件
学生姓名 学号 显示信息 需要用到文本框JTextField
单选按钮 需要用到组件 JRadioButton
复选框 需要用到组件 JCheckBox
组合框 需要用到组件 JComboBox
效果
参考代码如下
//导入所需要的包import javaawtevent;
import javaxswingborder;
import javaxswing;
import javaawt;
public class ClassFrame extends JFrame {// 写一个类继承自JFrame 窗体
// 定义组件
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField tfName, tfNum, allInfo;
private JRadioButton rb1, rb2;
private JCheckBox cb1, cb2, cb3;
private JComboBox<String> t1, t2, t3;
public static void main(String[] args) {
EventQueueinvokeLater(new Runnable() {
public void run() {
try {
ClassFrame frame = new ClassFrame();// 创建一个窗口实例
framesetVisible(true);// 让该窗口实例可见
} catch (Exception e) {
eprintStackTrace();
}
}
});
}
/
窗口属性的设置,内部组件的初始化
/
public ClassFrame() {
setTitle("选课ing");//标题
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);// 设置关闭是退出JVM
setSize(450, 339);// 设置窗体大小
setLocationRelativeTo(null);// 窗体居中
contentPane = new JPanel();// 内容面板
contentPanesetBorder(new EmptyBorder(5, 5, 5, 5));
contentPanesetLayout(new BorderLayout(0, 0));// 设置布局
setContentPane(contentPane);
JPanel panel = new JPanel(new GridLayout(5, 1, 5, 10));//5行1列的表格布局
panelsetBorder(new TitledBorder(null, "", TitledBorderLEADING, TitledBorderTOP, null, null));
contentPaneadd(panel, BorderLayoutCENTER);//给panel添加边框
JPanel panel_1 = new JPanel();
paneladd(panel_1);
JLabel label = new JLabel("姓名");
panel_1add(label);
tfName = new JTextField();
panel_1add(tfName);
tfNamesetColumns(10);
JLabel label_2 = new JLabel("学号");
panel_1add(label_2);
tfNum = new JTextField();
tfNumsetColumns(10);
panel_1add(tfNum);
rb1 = new JRadioButton("男");
panel_1add(rb1);
rb1setSelected(true);//设置单选按钮中,默认选择的按钮
rb2 = new JRadioButton("女");
panel_1add(rb2);
ButtonGroup bts = new ButtonGroup();//单选按钮需要加入同一个ButonGroup中才能生效
btsadd(rb1);
btsadd(rb2);
JPanel panel_2 = new JPanel();
paneladd(panel_2);
cb1 = new JCheckBox("高等数学");
panel_2add(cb1);
t1 = new JComboBox<String>();
t1setModel(new DefaultComboBoxModel<String>(new String[] { "林老师", "赵老师", "孙老师" }));
panel_2add(t1);
JPanel panel_3 = new JPanel();
paneladd(panel_3);
cb2 = new JCheckBox("世界经济");
panel_3add(cb2);
t2 = new JComboBox<String>();
t2setModel(new DefaultComboBoxModel<String>(new String[] { "张老师", "刘老师" }));
panel_3add(t2);
JPanel panel_4 = new JPanel();
paneladd(panel_4);
cb3 = new JCheckBox("音乐赏析");
panel_4add(cb3);
t3 = new JComboBox<String>();
t3setModel(new DefaultComboBoxModel<String>(new String[] { "王老师", "周老师" }));
panel_4add(t3);
JPanel panel_5 = new JPanel();
paneladd(panel_5);
JButton jbOk = new JButton("确定");
panel_5add(jbOk);
JButton jbRest = new JButton("重填");
panel_5add(jbRest);
JPanel panelSouth = new JPanel();
contentPaneadd(panelSouth, BorderLayoutSOUTH);
JLabel labe = new JLabel("选课信息");
labesetHorizontalAlignment(SwingConstantsLEFT);
panelSouthadd(labe);
allInfo = new JTextField();
allInfosetColumns(30);
panelSouthadd(allInfo);
JPanel panelNorth = new JPanel();
contentPaneadd(panelNorth, BorderLayoutNORTH);
JLabel labelTitle = new JLabel("学生选课界面");
labelTitlesetForeground(ColorDARK_GRAY);
labelTitlesetFont(new Font("宋体", FontBOLD, 20));
panelNorthadd(labelTitle);
//给确定按钮添加事件处理代码
jbOkaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StringBuilder info = new StringBuilder();
String name = tfNamegetText();
String num = tfNumgetText();
String sex;
if (rb1isSelected()) {
sex = "男";
} else {
sex = "女";
}
infoappend(name + num + sex);
if (cb1isSelected()) {
String c = cb1getText();
String t = t1getSelectedItem()toString();
infoappend(" " + c + t);
}
if (cb2isSelected()) {
String c = cb2getText();
String t = t2getSelectedItem()toString();
infoappend(" " + c + t);
}
if (cb3isSelected()) {
String c = cb3getText();
String t = t3getSelectedItem()toString();
infoappend(" " + c + t);
}
allInfosetText(infotoString());//把学生信息和选课信息放到文本框
}
});
//给重填按钮 设置事件处理代码
jbRestaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tfNamesetText("");
tfNumsetText("");
rb1setSelected(true);
cb1setSelected(false);
t1setSelectedIndex(0);
cb2setSelected(false);
t2setSelectedIndex(0);
cb3setSelected(false);
t3setSelectedIndex(0);
allInfosetText("");
}
});
}
}以下为两个类
//文本框,密码框,按钮,标签
import javaawtFlowLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javasqlSQLException;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJOptionPane;
import javaxswingJPasswordField;
import javaxswingJTextField;
import comtestkaoshiconntest;
public class CM extends JFrame {
public CM() {
thissetTitle("古少毅Java");
thissetBounds(200, 200, 200, 200);
final JTextField jf1 = new JTextField(10);
final JPasswordField jf2 = new JPasswordField(10);
JButton jb1 = new JButton("确定");
JButton jb2 = new JButton("重置");
JLabel lb1 = new JLabel(" 帐户名");
JLabel lb2 = new JLabel(" 密码");
setLayout(new FlowLayout());
add(lb1);
add(jf1);
add(lb2);
add(jf2);
add(jb1);
add(jb2);
jb1addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
jb2addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jf1setText(null);
jf2setText(null);
}
});
thissetDefaultCloseOperation(EXIT_ON_CLOSE);
thissetVisible(true);
}
public static void main(String[] args) {
new CM();
}
}
//10以内的随机数
public class 随机数 {
public static void main(String[] args) {
double a = Mathrandom() 10;
a = Mathceil(a);
int randomNum = new Double(a)intValue();
switch (randomNum) {
case 1:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 2:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 3:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 4:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 5:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 6:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 7:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 8:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 9:
Systemoutprintln(randomNum+"是随机出来的");
break;
case 10:
Systemoutprintln(randomNum+"是随机出来的");
break;
}
}
}概述
具体框架使用jframe,文本框组件:JTextField;密码框组件:JPasswordField;标签组件:JLabel;复选框组件:JCheckBox;单选框组件:JRadioButton;按钮组件JButton。
登录界面:
import javaxswing;
import javaawt; //导入必要的包
public class denglu extends JFrame{
JTextField jTextField ;//定义文本框组件
JPasswordField jPasswordField;//定义密码框组件
JLabel jLabel1,jLabel2;
JPanel jp1,jp2,jp3;
JButton jb1,jb2; //创建按钮
public denglu(){
jTextField = new JTextField(12);
jPasswordField = new JPasswordField(13);
jLabel1 = new JLabel("用户名");
jLabel2 = new JLabel("密码");
jb1 = new JButton("确认");
jb2 = new JButton("取消");
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//设置布局
thissetLayout(new GridLayout(3,1));
jp1add(jLabel1);
jp1add(jTextField);//第一块面板添加用户名和文本框
jp2add(jLabel2);
jp2add(jPasswordField);//第二块面板添加密码和密码输入框
jp3add(jb1);
jp3add(jb2); //第三块面板添加确认和取消
// jp3setLayout(new FlowLayout()); //因为JPanel默认布局方式为FlowLayout,所以可以注销这段代码
thisadd(jp1);
thisadd(jp2);
thisadd(jp3); //将三块面板添加到登陆框上面
//设置显示
thissetSize(300, 200);
//thispack();
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
thissetVisible(true);
thissetTitle("登陆");
}
public static void main(String[] args){
new denglu();
}
}
拓展内容java swing包
Swing 是一个为Java设计的GUI工具包。
Swing是JAVA基础类的一部分。
Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。
Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种 *** 作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
概念解析:
JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
JPanel – Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javaxswing 包中,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合,是一种轻量级容器,可以加入到JFrame窗体中。。
JLabel – JLabel 对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐。默认情况下,只显示文本的标签是开始边对齐;而只显示图像的标签则水平居中对齐。
JTextField –一个轻量级组件,它允许编辑单行文本。
JPasswordField – 允许我们输入了一行字像输入框,但隐藏星号() 或点创建密码(密码)
JButton – JButton 类的实例。用于创建按钮类似实例中的 "Login"。
//这是哪个背景类import javaawtImage;
import javaawt;
import javaxswing;
public class ImageBack extends JPanel{
Image im = null;
public imageback(Image im){
thisim=im;
int width = ToolkitgetDefaultToolkit()getScreenSize()width;
int height = ToolkitgetDefaultToolkit()getScreenSize()height;
thissetSize(width,height);
thissetVisible(true);
}
public static void main(String args[]){
}
public void paintComponent(Graphics g){
//清屏
superpaintComponent(g);
gdrawImage(im, 0, 0, thisgetWidth(),thisgetHeight(),this);
}
}
import javaxswing;
import javaioFile;
import javaioIOException;
import javanet;
/
学生管理系统主界面
/
public class StuMain extends JFrame{
//背景
Image image=null;
public StuMain() {
try {
image = ImageIOread(new File("images/startjpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
//把你要的背景放到背景面板里
imageback im = new imageback(image);
//把有背景的的JPanel放到JFrame里面
thisadd(im);
//添加框架的关闭事件处理
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
thispack();
//设置框架的大小
//设置标题
thissetTitle("学生管理系统");
thissetVisible(true);
}
public static void main(String args[]){
new StuMain();
}
}
如果那不懂随时米我 qq896182794package 学生管理界面;
import javaawtBorderLayout;
import javaawtCheckbox;
import javaawtCheckboxGroup;
import javaawtContainer;
import javaawtFont;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventItemEvent;
import javaawteventItemListener;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
import javaxswingJTextField;
//录入的信息包括学号、姓名、性别、出生日期、是否联合培养等
public class 学生信息图形界面 extends JFrame implements ActionListener {
public 学生信息图形界面() { //构造方法
//界面显示问题
super("学生信息图形界面");
setDefaultCloseOperation(JFrameDISPOSE_ON_CLOSE);
setSize(320, 300);
setVisible(true);
Container content = getContentPane();
JPanel jp1 = new JPanel(); //创建一个面板
JLabel label = new JLabel("欢迎使用学生信息管理系统"); //欢迎界面的欢迎语句
labelsetFont(new Font("楷体_GB2312", FontBOLD, 20)); //设置显示的字体
jp1add(label); //将标签添加到面板jp1中
JPanel jp2 = new JPanel(); //创建一个面板,用于摆放提示各种功能的标签
JLabel label1 = new JLabel("请输入学生的详细资料:"); //输入提示输入的语言:
label1setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
JLabel label2 = new JLabel("学 生 学 号:"); //提示各种输入内容的标签
label2setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体t
JTextField field1=new JTextField(10); //10为学号长度,可自行设定
JLabel label3 = new JLabel("学 生 姓 名:"); //提示输入学生姓名的标签
label3setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
JTextField field2=new JTextField(10); //10为姓名长度,可自行设定
JLabel label4 = new JLabel("学 生 性 别: "); //提示输入学生性别的标签
label4setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
CheckboxGroup group1 = new CheckboxGroup(); //创建一个复选框用于选择某一功能
Checkbox check11 = new Checkbox("男",true,group1); //添加选项到复选框中
check11setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
check11addItemListener(new CheckHandler1(1)); //给相应复选框添加事件监听器
Checkbox check12 = new Checkbox("女",false,group1); //添加选项到复选框中
check12setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
check12addItemListener(new CheckHandler1(2)); //给相应复选框添加事件监听器
JLabel label5 = new JLabel("出 生 日 期:"); //提示输入出生日期的标签
label5setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
JTextField field3=new JTextField("2000",3); //3为姓名长度,可自行设定
JLabel label51 = new JLabel("年");
label51setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
JTextField field4=new JTextField("01",2); //2为姓名长度,可自行设定
JLabel label52 = new JLabel("月");
label52setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
JTextField field5=new JTextField("01",2); //2为姓名长度,可自行设定
JLabel label53 = new JLabel("日");
label53setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
JLabel label6 = new JLabel("联合培养:"); //提示选择联合培养与否的标签
label6setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
CheckboxGroup group2 = new CheckboxGroup(); //创建一个复选框用于选择某一功能
Checkbox check21 = new Checkbox("是",true,group2); //添加选项到复选框中
check21setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
check21addItemListener(new CheckHandler2(1)); //给相应复选框添加事件监听器
Checkbox check22 = new Checkbox("否",false,group2); //添加选项到复选框中
check22setFont(new Font("楷体_GB2312", FontBOLD, 18)); //设置显示的字体
check22addItemListener(new CheckHandler2(2)); //给相应复选框添加事件监听器
//添加组件到面板容器中
jp2add(label1);
jp2add(label2);
jp2add(field1);
jp2add(label3);
jp2add(field2);
jp2add(label4);
jp2add(check11); jp2add(check12);
jp2add(label5);
jp2add(field3);jp2add(label51); jp2add(field4);jp2add(label52); jp2add(field5);jp2add(label53);
jp2add(label6);
jp2add(check21); jp2add(check22);
contentadd(jp1, BorderLayoutNORTH); //分别添加面板到容器中
contentadd(jp2, BorderLayoutCENTER); //分别添加面板到容器中
}
public void actionPerformed(ActionEvent e) {
// 事件响应处理
}
class CheckHandler1 implements ItemListener //复选框键的事件响应类
{
private int sel;
CheckHandler1(int select)
{
sel = select;
}
public void itemStateChanged(ItemEvent e)
{
switch(sel)
{
case 1:method1();break; //调用选择的相应功能的方法
case 2:method2();break; //调用选择的相应功能的方法
}
}
private void method1() { //事件响应方法
}
private void method2() { // 事件响应方法
}
}
class CheckHandler2 implements ItemListener //复选框键的事件响应类
{
private int sel;
CheckHandler2(int select)
{
sel = select;
}
public void itemStateChanged(ItemEvent e)
{
switch(sel)
{
case 1:method1();break; //调用选择的相应功能的方法
case 2:method2();break; //调用选择的相应功能的方法
}
}
private void method1() { //事件响应方法
}
private void method2() { //事件响应方法
}
}
//测试
public static void main(String[] args) {
学生信息图形界面 界面 = new 学生信息图形界面();
界面setVisible(true);
}
}写了个最简单的界面,其它要求自己可以添加和修改
package comframesmember;
import javaawtBorderLayout;
import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingJButton;
import javaxswingJComboBox;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJOptionPane;
import javaxswingJPanel;
import javaxswingJTextArea;
import javaxswingJTextField;
public class Register extends JFrame{
public Register(){
JPanel baseInfo = new JPanel(new GridLayout(3,2,5,5));
JLabel nameLabel = new JLabel("姓名:",JLabelRIGHT);
JTextField name = new JTextField(20);
baseInfoadd(nameLabel);
baseInfoadd(name);
JLabel ageLabel = new JLabel("年龄:",JLabelRIGHT);
JTextField age = new JTextField(20);
baseInfoadd(ageLabel);
baseInfoadd(age);
JLabel sexLabel = new JLabel("年龄:",JLabelRIGHT);
JComboBox sex = new JComboBox(new String[]{"男","女"});
baseInfoadd(sexLabel);
baseInfoadd(sex);
thisadd(baseInfo,BorderLayoutNORTH);
JPanel resumePanel = new JPanel(new GridLayout(1,1,5,5));
JLabel resumeLabel = new JLabel("简历:",JLabelRIGHT);
JTextArea resume = new JTextArea(10,20);
resumePaneladd(resumeLabel);
resumePaneladd(resume);
thisadd(resumePanel,BorderLayoutCENTER);
JPanel buttonPanel = new JPanel(new GridLayout(1,1,5,5));
JButton sub = new JButton("提交");
subsetSize(100, 50);
subaddActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPaneshowMessageDialog(null,"添加成功");
}});
JButton clear = new JButton("取消");
clearaddActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Systemexit(0);
}});
clearsetSize(100, 50);
buttonPaneladd(sub);
buttonPaneladd(clear);
thisadd(buttonPanel,BorderLayoutSOUTH);
}
public static void main(String[] args) {
Register reg = new Register();
regsetLocation(200, 100);
regsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
regsetVisible(true);
regpack();
}
}import javaxswing;import javaawt;import javaawtevent;
public class li53{
public static void main(String args[]){
ButtonDemo myButtonGUI=new ButtonDemo();
myButtonGUIsetVisible(true);
}
}
class ButtonDemo extends JFrame implements ActionListener{
public static final int Width=250;
public static final int Height=200;
ButtonDemo(){
setSize(Width,Height); setTitle("按钮事件样例");
Container conPane=getContentPane();
conPanesetBackground(Colorblue);
conPanesetLayout(new FlowLayout());
JButton redBut=new JButton("red");
redButaddActionListener(this);
conPaneadd(redBut);
JButton greenBut=new JButton("green");
greenButaddActionListener(this);
conPaneadd(greenBut);
}
public void actionPerformed(ActionEvent e){
Container conPane=getContentPane();
if(egetActionCommand()equals("red"))
conPanesetBackground(Colorred);
else if(egetActionCommand()equals("green"))
conPanesetBackground(Colorgreen);
}
}
我帮你改好了,在
else if(egetActionCommand()equals("green"));//这里多了个分号
conPanesetBackground(Colorgreen);
所以编程习惯要养成,在if后面无论几句话都要用{}将方法体括起来,你这样很容易错的。改起来也吃力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)