×

java界面设计

java界面设计(如何在Eclipse中进行Java的可视化界面设计)

admin admin 发表于2023-06-30 23:17:01 浏览44 评论0

抢沙发发表评论

本文目录

如何在Eclipse中进行Java的可视化界面设计

准备工作:1、下载JDK;2、下载Eclipse;3、下载相应的EMF、GEF、VE;注意:三个插件的版本要和Eclipse的版本配套才能正确使用,至于配套的说明请参考下载页面的说明 D、这时,光标会自动定位到程序相应的位置,我们在程序里加入下面语句: public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { System.out.println(“widgetSelected()“); MessageDialog.openInformation(null, “Hello“, “Hello World!“);//加入这条语句 } E、保存程序,点击菜单Run-》Run As-》Java Application,呵呵,跟全世界打个招呼吧!

JAVA的图形界面的布局设计有哪些,各种布局的用法

基本有五种BorderLayout 边界布局管理器将容器分为东、南、西、北、中五个区域分别用BorderLayout.SOUTH BorderLayout.NORTH BorderLayout.EAST BorderLayout.WEST BorderLayout.CENTERFlowLayout 流式布局管理器 按照组件的添加顺序将组件从左到右放置在容器中。允许左对齐、居中对齐、或右对齐GridLayout网格布局管理器将容器分割成多行多列 按照组件添加的顺序一次讲组件从左到右放置GridBagLayout网格包布局管理器允许组件中各个组件的大小各不相同CardLayout 卡片布局管理器将界面看成一些列的卡片,每一个卡片都有一个容器,任何时候只有一张卡片时可见的构造方法有CradLayout()和CradLayout(int hgap,int vgap)参数hgap表示卡片和容器的左右边界之间的间隙,参数vgap表示卡片和容器的上下边界之间的间隙

JAVA图形界面设计

在awt/swing里绘制圆形的方法是

g.drawOval(x, y,width, height);

x,y代表外接正方形的左顶点坐标

width和height相同是就是圆形.代表直径

参考代码

import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;public class TestFrame extends JFrame { public TestFrame() { add(new CirclePanel()); setSize(300, 230); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String args) { new TestFrame().setVisible(true); } //绘制图形的面板 class CirclePanel extends JPanel { int R=50;//直径 @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLUE);//设置颜色为蓝色 g.drawOval(80, 30, R, R);//圆形外接矩形的左顶点坐标是80,30; g.setColor(Color.BLACK); g.drawOval(120, 30, R, R); g.setColor(Color.RED); g.drawOval(160, 30, R, R); g.setColor(Color.YELLOW); g.drawOval(100, 65, R, R); g.setColor(Color.GREEN); g.drawOval(140, 65, R, R); g.setColor(Color.BLUE);//设置颜色为蓝色 g.setFont(new Font(“宋体“,Font.BOLD,22));//设置字体 g.drawString(“奥运五环旗“, 90, 160); } }}

用java设计一个简单的界面设计,越简单越好,谢谢

用java设计一个简单的界面可以参考如下实例:

import javax.swing.JFrame;//框架import javax.swing.JPanel;//面板import javax.swing.JButton;//按钮import javax.swing.JLabel;//标签import javax.swing.JTextField;//文本框import java.awt.Font;//字体import java.awt.Color;//颜色import javax.swing.JPasswordField;//密码框import java.awt.event.ActionListener;//事件监听import java.awt.event.ActionEvent;//事件处理import javax.swing.JOptionPane;//消息窗口public class UserLogIn extends JFrame{ public JPanel pnluser; public JLabel lbluserLogIn; public JLabel lbluserName; public JLabel lbluserPWD; public JTextField txtName; public JPasswordField pwdPwd; public JButton btnSub; public JButton btnReset; public UserLogIn(){  pnluser = new JPanel();  lbluserLogIn = new JLabel();  lbluserName = new JLabel();  lbluserPWD = new JLabel();  txtName = new JTextField();  pwdPwd = new JPasswordField();  btnSub = new JButton();  btnReset = new JButton();  userInit(); } public void userInit(){  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭框架的同时结束程序  this.setSize(300,200);//设置框架大小为长300,宽200  this.setResizable(false);//设置框架不可以改变大小  this.setTitle(“用户登录“);//设置框架标题  this.pnluser.setLayout(null);//设置面板布局管理  this.pnluser.setBackground(Color.cyan);//设置面板背景颜色  this.lbluserLogIn.setText(“用户登录“);//设置标签标题  this.lbluserLogIn.setFont(new Font(“宋体“,Font.BOLD | Font.ITALIC,14));//设置标签字体  this.lbluserLogIn.setForeground(Color.RED);//设置标签字体颜色  this.lbluserName.setText(“用户名:“);  this.lbluserPWD.setText(“密    码:“);  this.btnSub.setText(“登录“);  this.btnReset.setText(“重置“);  this.lbluserLogIn.setBounds(120,15,60,20);//设置标签x坐标120,y坐标15,长60,宽20  this.lbluserName.setBounds(50,55,60,20);  this.lbluserPWD.setBounds(50,85,60,25);  this.txtName.setBounds(110,55,120,20);  this.pwdPwd.setBounds(110,85,120,20);  this.btnSub.setBounds(85,120,60,20);  this.btnSub.addActionListener(new ActionListener()//匿名类实现ActionListener接口   {    public void actionPerformed(ActionEvent e){     btnsub_ActionEvent(e);    }       }  );   this.btnReset.setBounds(155,120,60,20);  this.btnReset.addActionListener(new ActionListener()//匿名类实现ActionListener接口   {    public void actionPerformed(ActionEvent e){     btnreset_ActionEvent(e);    }       }  );     this.pnluser.add(lbluserLogIn);//加载标签到面板  this.pnluser.add(lbluserName);  this.pnluser.add(lbluserPWD);  this.pnluser.add(txtName);  this.pnluser.add(pwdPwd);  this.pnluser.add(btnSub);  this.pnluser.add(btnReset);  this.add(pnluser);//加载面板到框架  this.setVisible(true);//设置框架可显   } public void btnsub_ActionEvent(ActionEvent e){  String name = txtName.getText();  String pwd = String.valueOf(pwdPwd.getPassword());  if(name.equals(““)){   JOptionPane.showMessageDialog(null,“账号不能为空“,“错误“,JOptionPane.ERROR_MESSAGE);   return;  }else if (pwd.equals(““)){   JOptionPane.showMessageDialog(null,“密码不能为空“,“错误“,JOptionPane.ERROR_MESSAGE);   return;  }else if(true){   this.dispose();  }else{   JOptionPane.showMessageDialog(null,“账号或密码错误“,“错误“,JOptionPane.ERROR_MESSAGE);   return;  } } public void btnreset_ActionEvent(ActionEvent e){  txtName.setText(““);  pwdPwd.setText(““); } public static void main(String args){  new UserLogIn(); }}

java界面设计

我觉得,页面布局什么的,这个不用说了吧。。就是逻辑而已,点击“第一步”,判断有没有输入,如果有输入,判断是不是正整数,如果条件符合,那么第一格显示输入的值,然后第二格,处理下(其实就是for循环String,倒序)然后第三格=第一格+第二格的值;第二步,同样获得第一步最后一个的和值,然后类似第一步。如下类似

eclipse怎么进行 可视化java界面设计

进行eclipse可视化java界面设计步骤如下:

一、先新建一个普通的java工程。

二、为这个java工程添加有可视化界面的java类,选择新建中的other选项。

三、找到windows build里的jFrame,即主界面,进行新建有界面的java。

四、点击Design进入可视化界面、

简述java程序设计中界面设计中的三种布局方式

1 边框布局JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new FlowLayout());凭着我们现在所积累的阅读程序的功夫,应该能够很快地知道我们通过第一条语句创建了一个容器JPanel类的panel1。而接下来,我们则调用了panel1.setLayout(new FlowLayout()),在上一章中,我们一直没有对它进行相应的分析。现在该是揭开它的面纱的时候了。单词layout的中文意思是“布局”、“布置”,setLayout就是设置布局格式。也就是说,容器panel1的方法setLayout是用来设置布局格式的。那么,我们一直用的是什么模式呢?对,就是后面括号里的FlowLayout()。顾名思义,也就是流布局方式。这是一种顺其自然的方式:从左到右,一个个对象地摆放,摆不下,就摆到下一行。所以,我们就无法去控制它。从本章开始,我们就要学习一种控制布局的方法。在Java语言中,提供了各种布局管理器,以便大家能够达到这一目的。通常我们最常使用的布局管理器是:Border Layout(边框布局管理器),如下图所示,边框布局管理器将一个屏幕分成了五个部分:东、南、西、北、中。如果要使用这种边框布局管理进行布局控制,我们必须先将“容器”设置为“边框布局控制模式”,具体来说,就是当调用setLayout方法为容器设置布局控制模式时,参数设置为BorderLayout。例如:JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new BorderLayout());然后,我们就可以在使用容器的add方法添加部件时,附加上位置参数,使得该部件显示在指定的位置上。位置参数分别是:BorderLayout.NORTH 位置为北BorderLayout.SOUTH 位置为南BorderLayout.EAST 位置为东BorderLayout.WEST 位置为西BorderLayout.NORTH 位置为中心实例说明下面,我们就来试一试,使用按钮排出五个方向!请创建一个testBorder.java,输入以下源程序:源程序:useTextArea.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testBorder extends JApplet{public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new BorderLayout());JButton north=new JButton(“North“);JButton south=new JButton(“South“);JButton east=new JButton(“East“);JButton west=new JButton(“West“);JButton center=new JButton(“Center“);panel1.add(north,BorderLayout.NORTH);panel1.add(south,BorderLayout.SOUTH);panel1.add(east,BorderLayout.EAST);panel1.add(west,BorderLayout.WEST);panel1.add(center,BorderLayout.CENTER);}}然后,我们使用javac编译这个程序,然后一个显示这个Java Applet的HTML页面。最后调用appletviewer来观察这个页面为了试一下,如果并没有在每个位置都安排一个部件,那么会怎么样呢?我们修改一下程序,将panel1.add(west,BorderLayout.WEST);这一行注释掉(就是在前面加上“//”号),也就是不显示西边的按钮,看一下结果如何。正如上图(图10-3)所示,西边由于没有部件,因此“中”就朝西靠,“占领”了它的位置。而如果我们修改一下程序,让中间的按钮不显示的话,就会出现如图10-5的样子,中间的区域并未并占领,而是空在那里了!这是与其它位置不同的地方,大家一定要记住。一些提示:其实这很好理解,如果中间的那一块的位置被其它位置上的部件占领的话,就会使得分不清“东”、“南”、“西”、“北”了。倒成了“左上角”、“左下角”、“右上角”、“右下角”了。2 网格布局实例说明下面,我们来看一个新的程序!首先创建一个testGrid.java文件,并输入以下源程序:源程序:testGrid.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testGrid extends JApplet{String buttonLabels={“No.1“,“No.2“,“No.3“,“No.4“,“No.5“,“No.6“,“No.7“,“No.8“,“No.9“};public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(3,3));for (int x=0; xpanel1.add(new JButton(buttonLabels));}}这个程序使用javac编译完后,编写一个包含这个类的HTML页面,再用appletviewer来观察发现运行结果如下图所示:图10-13 练习答案图这个输出是不是令你感到十分意外,整个程序根本不按要求分成5列,所以我们从这里得到一个使用网格布局中要十二分注意的一点:“请别忘了将网格填满”。否则程序的输出将不可预料。一些提示:如果你真的没有那么多东西来“占领”网格的话,我建议你使用一个空标签来填补这个空白的网格,使得程序的输出如你所愿。使用空标签的方法很容易:panel1.add(new Label(“”));从这里,我们也看出了,我们学习过的流布局管理器、边框布局管理器,以及我们刚学习过的网格布局管理器都比较死板,不够高级。10.3 组合布局传授新知正如我们在上一小节结束的时候说的一样,各种布局管理器都有自己的缺点,没有一种能够真正地完全满足我们编写GUI程序时的要求。而在Java语言中,允许在容器中加入其他容器,这样每个容器可以根据自己的需要采用不同的布局管理器,组合成为一个我们所需要的GUI程序界面。这种方法,我们就称之为组合布局。注意:与流布局、边框布局、网格布局不同,组合布局并不是一个新的布局管理器,它是通过结合各种布局管理器的优点,将它们组合地应用在GUI程序界面的开发中。这是一种布局管理的方法。也可以说是一种GUI程序界面的开发技巧。 当我们设计GUI程序界面时,最好先在纸上把它画出来,然后“分块解决”。也就是将能够组合在一起的部件找出来,将它们放在一个容器里,并为它们选择合适的布局管理器。然后把这些容器摆放在一起,就解决了。设计时还要考虑到窗体大小发生改变的时候,引起的部件形体变化。这方面,请你熟记几个设计技巧:1) 对于那些要求扁平状的部件,我们应该将它放置在边框布局中的南面或北面;2) 对于那些要求细高状的部件,我们应该将它放置在边框布局中的东面或西面;3) 对于那些可以随着窗体改变大小部分,我们可以将它放置在边框布局的中间;4) 如果我们要求部件保持大小相同,那么,我们就应该采用网格布局。下面,我们就通过几个实际的例子,来让大家领会和掌握这种设计的思路与方法。实例说明我们首先创建一个testCombination.java文件,然后输入以下源程序:源程序:testCombination.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testCombination1 extends JApplet{public void init(){Frame frame1=new Frame(“testCombination1“);frame1.setLayout(new BorderLayout());TextArea text1=new TextArea();frame1.add(text1,BorderLayout.CENTER);JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(1,3,10,5));panel1.add(new JButton(“A“));panel1.add(new JButton(“B“));panel1.add(new JButton(“C“));frame1.add(panel1,BorderLayout.SOUTH);frame1.pack();frame1.show();}}然后,我们使用javac编译这个程序,然后一个显示这个Java Applet的HTML页面。最后调用appletviewer来观察这个页面,如下图所示:图10-14 程序testCombination.java的输出正如上图所示,程序的输出与以前不同,各个部件不是显示在Appletviewer程序框中,而是显示在另一个窗口中。这是怎么回事呢?下面我们就一起来看一下这个程序!传授新知在以前的程序中,我们一直都是使用容器JPanel,面板。而我们在这个程序中引进了一个新的容器Frame。使用了这个容器后,就会新创建一个窗口。这也就是为什么程序的输出有这么大的变化的原因。1)Frame frame1=new Frame(“testCombination“);这条语句,定义了一个Frame容器frame1,然后使用new操作符调用构造器方法,后面带的参数“testCombination”则是这个Frame的标题。一些提示:其实大家能Frame所体现出来的效果是很熟悉的,它等价于Windows中的窗体。而Frame的标题就是窗体的标题。2) frame1.setLayout(new BorderLayout());与JPanel容器一样,我们可以调用setLayout方法来设置Frame的布局管理器。在这里,我们将Frame容器frame1的布局管理器设置成为边框布局管理器(也就是我们在10.1小节中学习过的布局管理器)。3) frame1.add(text1,BorderLayout.CENTER);紧接着,我们调用frame1的add方法,将文本区部件text1添加到frame1容器中来。注意我们设置了它的位置:BorderLayout.CENTER。这是因为,我们希望这个文本区能够随着窗体的大小变化而变化。所以适合将其放在在中间位置。4) panel1.setLayout(new GridLayout(1,3,10,5));我们又定义了一个JPanel容器panel1,并将其的布局管理器设置为网格布局管理器。并通过指定参数,使得整个panel1被分成1行3列,水平空隙为10的网格。5) frame1.add(panel1,BorderLayout.SOUTH);这是组合布局方法最重要的一步,我们将panel1这个容器,加入到了frame1这个容器中去了。并且指定了panel1这个容器在整个frame1中所占的位置:BorderLayout.SOUTH,也就是下边。这样,panel1中包含的三个按钮就会永远(不管窗体大小如何改变)呆在文本区的下边,而且三个按钮的大小会根据窗体大小的改变而改变。一些提示:这是因为,panel1中的按钮是用网格布局的。6) frame1.pack();frame1.show();与JPanel不一样,使用Frame容器,不能够直接显示了出来。我们必须调用Frame容器的show方法才能使得Frame显示出来。而在使用show方法之前,我们还需要使用pack方法将Frame中的内容做一个整合。请记住这里的使用方法。4 GridBag布局实例说明到现在为止,我们已经学习了边框布局、网格布局以及组合布局,现在大家试一试编写一个程序,怎么样,挺有难度的吧!完成这个GUI得花很多心思去设计组合,十分讨厌,下面我们就使用一个新的布局管理器GridBagLayout来解决这种难题。首先,输入以下源程序:源程序:testGridBag.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testGridBag extends JApplet{public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridBagLayout());GridBagConstraints gbdc=new GridBagConstraints();gbdc.fill=GridBagConstraints.BOTH;gbdc.weightx=1;gbdc.weighty=1;panel1.add(new JButton(“No.1“),gbdc);panel1.add(new JButton(“No.2“),gbdc);panel1.add(new JButton(“No.3“),gbdc);gbdc.gridwidth=2;gbdc.gridx=0;panel1.add(new JButton(“No.4“),gbdc);gbdc.gridx=2;gbdc.gridwidth=1;gbdc.gridheight=2;panel1.add(new JButton(“No.5“),gbdc);gbdc.gridx=0;gbdc.gridheight=1;panel1.add(new JButton(“No.6“),gbdc);gbdc.gridx=1;panel1.add(new JButton(“No.7“),gbdc);gbdc.gridx=0;gbdc.gridwidth=2;panel1.add(new JButton(“No.8“),gbdc);gbdc.gridx=2;gbdc.gridwidth=1;panel1.add(new JButton(“No.9“),gbdc);}}在这个程序中,我们使用了GridBagLayout轻松地完成了这个界面的设计,允分凸现出它的强大。可以这么说,GridBagLayout是Java语言中最强大的布局管理器。GridBagLayout,从名字上看,就知道它与GridLayout有一定的渊源,是的,GridBagLayout的确与其十分类似,也是使用网格来进行布局管理的。但与GridLayout(网格布局)不同的是,GridBagLayout不像网格布局一相,需要所有的部件的大小、形状相同。而且还可以将某一个部件放在一个固定的位置上。下面,我们一起来分析一下testGridBag.java程序。1) panel1.setLayout(new GridBagLayout());在调用setLayout方法时,指定为GridBagLaoyout,使panel1使用GridBag布局管理。2) GridBagConstraints gbdc=new GridBagConstraints();GridBagLayout布局管理器是通过一个GridBagConstraints类来实现神奇的效果的。所以,我们要在使用时先定义一个GridBagConstraints类的对象。在这个程序中,我们定义了一个GridBagConstraints类的对象gbdc。3) gbdc.fill=GridBagConstraints.BOTH;由于网格单元可能比该单元中的部件大,如果是这样,部件放置在单元格内会有一些多余空间。在默认情况下,部件不会扩张,也就是不会填充这个多余空间。GridBagConstraints提供了一个fill属性,我们可以通过设置它的值来起到不同的效果。¨ GridBagConstraints.NONE:不扩张,是默认值;¨ GridBagConstraints.HORIZONTAL:部件水平扩张,将水平方向的多余空间填满;¨ GridBagConstraints.VERTICAL:部件垂直扩张,将垂直方向的多余空间填满;¨ GridBagConstraints.BOTH:部件同时向两个方向扩张,将单元格填满。4) gbdc.weightx=1;gbdc.weighty=1;weightx和weighty是GridBagConstraints提供的另一对属性。它的取值是整型数,默认值为0。用来设置行(weightx)、列(weighty)的“重量”,如果值为0的话,所有的部件都会紧收在一起,聚集在中央,如图10-17所示。而如果取值为其它数字,则会根据值来分配空间。5) panel1.add(new JButton(“No.1“),gbdc);panel1.add(new JButton(“No.2“),gbdc);panel1.add(new JButton(“No.3“),gbdc);在没有任何约束的时候,向gbdc中添加按钮,这时效果与采用网格布局的效果完全一样。一个接着一个地“占领”单元格。6) gbdc.gridwidth=2;gbdc.gridx=0;panel1.add(new JButton(“No.4“),gbdc);由于第四个按钮(No.4)是宽度是2,在GridBagLayout中,是由gridwidth属性来控制添加进入的部件的宽度的。我们通过gbdc.gridwidth=2将其设置为2,这样,再添加进入的部件就会变成为2个单元格的宽度。另外,我们再使用gbdc.gridx=0让其另起一行,从最左边的单元格开始填充。因此,我们发现第四个按钮被加在了第二行,宽度为2个单元格。7) gbdc.gridx=2;gbdc.gridwidth=1;gbdc.gridheight=2;panel1.add(new JButton(“No.5“),gbdc);接下来,我们要摆放第五个按钮,这个按钮将从第3个单元开始填充,其宽度为一个单元格,而高度则为两个单元格。因此,我们首先使用用gbdc.gridx=2,使得下一个添加的部件(第五个按钮)放入第3个单元格(0代表第1个单元格,因此第3个单元格应该是2)。由于,前面我们已经将gridwidth设置为2了,因此,我们需要使用gbdc.gridwidth=1,将其值设置回1。最后使用gdbc.gridheight=2,使得添入的部件的单元格纵向跨越两个单元格。8) gbdc.gridx=0;gbdc.gridheight=1;panel1.add(new JButton(“No.6“),gbdc);我想这一段程序,大家应该都不会再有什么理解上的问题了吧!主要提醒大家注意的是,我们使用gbdc.gridheight=1将单元格纵向跨度改成了默认值1。这是因为我们在前面需要时将其改成了2,所以在此需要将其改回来。实例说明为了更好地理解这个强大的GridBagLayout布局管理器,我们再来做一个有趣的实验。首先,我们创建一个testGridBag2.java源程序:testGridBag2.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testGridBag2 extends JApplet{public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridBagLayout());GridBagConstraints gbdc=new GridBagConstraints();panel1.add(new JButton(“No.1“),gbdc);panel1.add(new JButton(“No.2“),gbdc);setSize(300,200);}}然后我们使用鼠标改变一下窗口的大小,看一下,这两个按钮有什么变化?你会惊奇地发现,窗口改变了大小,两个按钮的大小却没有变,而且一直呆在正中央的位置。一些说明:在这个程序中,我们使用了一个以前没有用过的语句:setsize(300.200),它的功能是在程序中设置窗口的大小。现在我们对这个程序做一些修改!将添加两个按钮的两条语句:panel1.add(new JButton(“No.1“),gbdc);panel1.add(new JButton(“No.2“),gbdc);将它们扩展为:gbdc.weightx=1;panel1.add(new JButton(“No.1“),gbdc);gbdc.weightx=3;panel1.add(new JButton(“No.2“),gbdc);为什么会得到这个效果呢?我们在程序中添加按钮的程序段前加入一句:gbdc.fill=GridBagConstraints.HORIZONTAL;再重新编译一下程序,再看看程序的输出有什么变化!在得到结果之前,自己可以想象一下结果,然后看一下程序的实际输出与你的想法是否相吻合。我们惊奇地发现,第二个按钮,突然变得十分宽起来(如图10-20所示)。这是因为放置第二个按钮的单元格的宽度是3,而第一个按钮的宽度是1。而且,我们又让第二个按钮横向扩展,因此得到了这样的输出结果。相信实验做到这里,不须我说,大家也会有一些心得体会了。但是GridBagLayout远不止这一点,大家应该多做试验,才能够在真实的使用环境中有效地掌握GridBagLayout。

用Java语言设计一个界面,

  1. 首先:采用什么技术实现

     java语言可以使用awt 和swing等技术实现图形界面

    推荐使用Swing,因为Swing比AWT更专业,更漂亮,组件更丰富,功能更强大。

 2.   其次:分析采用什么布局

    边界布局BorderLayout,配合表格布局GridLayout,既简单又美观

  3.   最后:分析需求中需要用的组件

    学生姓名 学号  显示信息 需要用到文本框JTextField

    单选按钮 需要用到组件 JRadioButton

    复选框    需要用到组件 JCheckBox

    组合框    需要用到组件 JComboBox

图片效果

参考代码如下

//导入所需要的包import java.awt.event.*;import javax.swing.border.*;import javax.swing.*;import java.awt.*;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) { EventQueue.invokeLater(new Runnable() { public void run() { try { ClassFrame frame = new ClassFrame();// 创建一个窗口实例 frame.setVisible(true);// 让该窗口实例可见 } catch (Exception e) { e.printStackTrace(); } } }); } /**  * 窗口属性的设置,内部组件的初始化  */ public ClassFrame() { setTitle(“选课ing...“);//标题 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭是退出JVM setSize(450, 339);// 设置窗体大小 setLocationRelativeTo(null);// 窗体居中 contentPane = new JPanel();// 内容面板 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0));// 设置布局 setContentPane(contentPane); JPanel panel = new JPanel(new GridLayout(5, 1, 5, 10));//5行1列的表格布局 panel.setBorder(new TitledBorder(null, ““, TitledBorder.LEADING, TitledBorder.TOP, null, null)); contentPane.add(panel, BorderLayout.CENTER);//给panel添加边框 JPanel panel_1 = new JPanel(); panel.add(panel_1); JLabel label = new JLabel(“姓名“); panel_1.add(label); tfName = new JTextField(); panel_1.add(tfName); tfName.setColumns(10); JLabel label_2 = new JLabel(“学号“); panel_1.add(label_2); tfNum = new JTextField(); tfNum.setColumns(10); panel_1.add(tfNum); rb1 = new JRadioButton(“男“); panel_1.add(rb1); rb1.setSelected(true);//设置单选按钮中,默认选择的按钮 rb2 = new JRadioButton(“女“); panel_1.add(rb2); ButtonGroup bts = new ButtonGroup();//单选按钮需要加入同一个ButonGroup中才能生效 bts.add(rb1); bts.add(rb2); JPanel panel_2 = new JPanel(); panel.add(panel_2); cb1 = new JCheckBox(“高等数学“); panel_2.add(cb1); t1 = new JComboBox《String》(); t1.setModel(new DefaultComboBoxModel《String》(new String { “林老师“, “赵老师“, “孙老师“ })); panel_2.add(t1); JPanel panel_3 = new JPanel(); panel.add(panel_3); cb2 = new JCheckBox(“世界经济“); panel_3.add(cb2); t2 = new JComboBox《String》(); t2.setModel(new DefaultComboBoxModel《String》(new String { “张老师“, “刘老师“ })); panel_3.add(t2); JPanel panel_4 = new JPanel(); panel.add(panel_4); cb3 = new JCheckBox(“音乐赏析“); panel_4.add(cb3); t3 = new JComboBox《String》(); t3.setModel(new DefaultComboBoxModel《String》(new String { “王老师“, “周老师“ })); panel_4.add(t3); JPanel panel_5 = new JPanel(); panel.add(panel_5); JButton jbOk = new JButton(“确定“); panel_5.add(jbOk); JButton jbRest = new JButton(“重填“); panel_5.add(jbRest); JPanel panelSouth = new JPanel(); contentPane.add(panelSouth, BorderLayout.SOUTH); JLabel labe = new JLabel(“选课信息“); labe.setHorizontalAlignment(SwingConstants.LEFT); panelSouth.add(labe); allInfo = new JTextField(); allInfo.setColumns(30); panelSouth.add(allInfo); JPanel panelNorth = new JPanel(); contentPane.add(panelNorth, BorderLayout.NORTH); JLabel labelTitle = new JLabel(“学生选课界面“); labelTitle.setForeground(Color.DARK_GRAY); labelTitle.setFont(new Font(“宋体“, Font.BOLD, 20)); panelNorth.add(labelTitle); //给确定按钮添加事件处理代码 jbOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { StringBuilder info = new StringBuilder(); String name = tfName.getText(); String num = tfNum.getText(); String sex; if (rb1.isSelected()) { sex = “男“; } else { sex = “女“; } info.append(name + num + sex); if (cb1.isSelected()) { String c = cb1.getText(); String t = t1.getSelectedItem().toString(); info.append(“ “ + c + t); } if (cb2.isSelected()) { String c = cb2.getText(); String t = t2.getSelectedItem().toString(); info.append(“ “ + c + t); } if (cb3.isSelected()) { String c = cb3.getText(); String t = t3.getSelectedItem().toString(); info.append(“ “ + c + t); } allInfo.setText(info.toString());//把学生信息和选课信息放到文本框 } }); //给重填按钮 设置事件处理代码 jbRest.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tfName.setText(““); tfNum.setText(““); rb1.setSelected(true); cb1.setSelected(false); t1.setSelectedIndex(0); cb2.setSelected(false); t2.setSelectedIndex(0); cb3.setSelected(false); t3.setSelectedIndex(0); allInfo.setText(““); } }); }}