① java界面设计的GUI是什么东西
如果要写桌面基于Swing窗体的程序,建议用netbeans.
NB的Swing插件比eclipse好用很多。也可以在NB里面画好了窗体复制到eclipse里去用。
② JAVA图形界面设计
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
{
publicTestFrame(){
add(newCirclePanel());
setSize(300,230);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
} publicstaticvoidmain(String[]args){
newTestFrame().setVisible(true);
}
//绘制图形的面板
classCirclePanelextendsJPanel{
intR=50;//直径
@Override
protectedvoidpaintComponent(Graphicsg){
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(newFont("宋体",Font.BOLD,22));//设置字体
g.drawString("奥运五环旗",90,160);
}
}
}
③ 用Java语言设计一个界面,
首先:采用什么技术实现
java语言可以使用awt 和swing等技术实现图形界面
推荐使用Swing,因为Swing比AWT更专业,更漂亮,组件更丰富,功能更强大。
2. 其次:分析采用什么布局
边界布局BorderLayout,配合表格布局GridLayout,既简单又美观
3. 最后:分析需求中需要用的组件
学生姓名 学号 显示信息 需要用到文本框JTextField
单选按钮 需要用到组件JRadioButton
复选框 需要用到组件JCheckBox
组合框 需要用到组件JComboBox
图片效果
//导入所需要的包
importjava.awt.event.*;
importjavax.swing.border.*;
importjavax.swing.*;
importjava.awt.*;
{//写一个类继承自JFrame窗体
//定义组件
=1L;
privateJPanelcontentPane;
privateJTextFieldtfName,tfNum,allInfo;
privateJRadioButtonrb1,rb2;
privateJCheckBoxcb1,cb2,cb3;
privateJComboBox<String>t1,t2,t3;
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
ClassFrameframe=newClassFrame();//创建一个窗口实例
frame.setVisible(true);//让该窗口实例可见
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
/**
*窗口属性的设置,内部组件的初始化
*/
publicClassFrame(){
setTitle("选课ing...");//标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭是退出JVM
setSize(450,339);//设置窗体大小
setLocationRelativeTo(null);//窗体居中
contentPane=newJPanel();//内容面板
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setLayout(newBorderLayout(0,0));//设置布局
setContentPane(contentPane);
JPanelpanel=newJPanel(newGridLayout(5,1,5,10));//5行1列的表格布局
panel.setBorder(newTitledBorder(null,"",TitledBorder.LEADING,TitledBorder.TOP,null,null));
contentPane.add(panel,BorderLayout.CENTER);//给panel添加边框
JPanelpanel_1=newJPanel();
panel.add(panel_1);
JLabellabel=newJLabel("姓名");
panel_1.add(label);
tfName=newJTextField();
panel_1.add(tfName);
tfName.setColumns(10);
JLabellabel_2=newJLabel("学号");
panel_1.add(label_2);
tfNum=newJTextField();
tfNum.setColumns(10);
panel_1.add(tfNum);
rb1=newJRadioButton("男");
panel_1.add(rb1);
rb1.setSelected(true);//设置单选按钮中,默认选择的按钮
rb2=newJRadioButton("女");
panel_1.add(rb2);
ButtonGroupbts=newButtonGroup();//单选按钮需要加入同一个ButonGroup中才能生效
bts.add(rb1);
bts.add(rb2);
JPanelpanel_2=newJPanel();
panel.add(panel_2);
cb1=newJCheckBox("高等数学");
panel_2.add(cb1);
t1=newJComboBox<String>();
t1.setModel(newDefaultComboBoxModel<String>(newString[]{"林老师","赵老师","孙老师"}));
panel_2.add(t1);
JPanelpanel_3=newJPanel();
panel.add(panel_3);
cb2=newJCheckBox("世界经济");
panel_3.add(cb2);
t2=newJComboBox<String>();
t2.setModel(newDefaultComboBoxModel<String>(newString[]{"张老师","刘老师"}));
panel_3.add(t2);
JPanelpanel_4=newJPanel();
panel.add(panel_4);
cb3=newJCheckBox("音乐赏析");
panel_4.add(cb3);
t3=newJComboBox<String>();
t3.setModel(newDefaultComboBoxModel<String>(newString[]{"王老师","周老师"}));
panel_4.add(t3);
JPanelpanel_5=newJPanel();
panel.add(panel_5);
JButtonjbOk=newJButton("确定");
panel_5.add(jbOk);
JButtonjbRest=newJButton("重填");
panel_5.add(jbRest);
JPanelpanelSouth=newJPanel();
contentPane.add(panelSouth,BorderLayout.SOUTH);
JLabellabe=newJLabel("选课信息");
labe.setHorizontalAlignment(SwingConstants.LEFT);
panelSouth.add(labe);
allInfo=newJTextField();
allInfo.setColumns(30);
panelSouth.add(allInfo);
JPanelpanelNorth=newJPanel();
contentPane.add(panelNorth,BorderLayout.NORTH);
JLabellabelTitle=newJLabel("学生选课界面");
labelTitle.setForeground(Color.DARK_GRAY);
labelTitle.setFont(newFont("宋体",Font.BOLD,20));
panelNorth.add(labelTitle);
//给确定按钮添加事件处理代码
jbOk.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
StringBuilderinfo=newStringBuilder();
Stringname=tfName.getText();
Stringnum=tfNum.getText();
Stringsex;
if(rb1.isSelected()){
sex="男";
}else{
sex="女";
}
info.append(name+num+sex);
if(cb1.isSelected()){
Stringc=cb1.getText();
Stringt=t1.getSelectedItem().toString();
info.append(""+c+t);
}
if(cb2.isSelected()){
Stringc=cb2.getText();
Stringt=t2.getSelectedItem().toString();
info.append(""+c+t);
}
if(cb3.isSelected()){
Stringc=cb3.getText();
Stringt=t3.getSelectedItem().toString();
info.append(""+c+t);
}
allInfo.setText(info.toString());//把学生信息和选课信息放到文本框
}
});
//给重填按钮设置事件处理代码
jbRest.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
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("");
}
});
}
}
④ java图形界面设计如何从一个界面跳到另外界面再返回
import java.awt.BorderLayout;x0dx0aimport java.awt.Color;x0dx0aimport java.awt.FlowLayout;x0dx0aimport java.awt.Font;x0dx0aimport java.awt.event.ActionEvent;x0dx0aimport java.awt.event.ActionListener;x0dx0aimport java.awt.event.KeyEvent;x0dx0aimport java.awt.event.KeyListener;x0dx0aimport java.util.Calendar;x0dx0ax0dx0aimport javax.swing.JButton;x0dx0aimport javax.swing.JFrame;x0dx0aimport javax.swing.JLabel;x0dx0aimport javax.swing.JOptionPane;x0dx0aimport javax.swing.JPasswordField;x0dx0aimport javax.swing.JTextArea;x0dx0ax0dx0apublic class Test2{x0dx0apublic Test2() {}x0dx0ax0dx0aJFrame frame; //主界面框架x0dx0ax0dx0a//主界面函数x0dx0apublic void mainFace() {x0dx0aframe=new JFrame("主界面");x0dx0aframe.setLayout(new BorderLayout());x0dx0ax0dx0aJLabel label=new JLabel("这是主界面");x0dx0aframe.add(label,BorderLayout.CENTER);x0dx0ax0dx0aJButton button=new JButton("进入另一个界面");x0dx0aframe.add(button,BorderLayout.SOUTH);x0dx0abutton.addActionListener(new ActionListener() {x0dx0ax0dx0a@Overridex0dx0apublic void actionPerformed(ActionEvent e) {x0dx0aotherFace(); //进入另一个界面x0dx0aframe.dispose(); //主界面关闭x0dx0a}x0dx0ax0dx0a});x0dx0ax0dx0aframe.setSize(400,300);x0dx0aframe.setLocation(100,50);x0dx0aframe.setVisible(true);x0dx0aframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);x0dx0a}x0dx0ax0dx0a//另一个图形界面x0dx0apublic void otherFace() {x0dx0afinal JFrame oframe=new JFrame("另一个界面");x0dx0aoframe.setLayout(new BorderLayout());x0dx0ax0dx0aJTextArea displayArea=new JTextArea();x0dx0aoframe.add(displayArea,BorderLayout.CENTER);x0dx0adisplayArea.setFont(new Font("宋体",Font.BOLD,30));x0dx0adisplayArea.setForeground(Color.red);x0dx0ax0dx0adisplayArea.append("\n\n\n\n 这是另一个图形界面");x0dx0ax0dx0aJButton button1=new JButton("返回主界面");x0dx0aoframe.add(button1,BorderLayout.SOUTH);x0dx0ax0dx0abutton1.addActionListener(new ActionListener() {x0dx0ax0dx0a@Overridex0dx0apublic void actionPerformed(ActionEvent e) {x0dx0aframe.setVisible(true); //主界面显示x0dx0aoframe.dispose(); //另一个界面关闭x0dx0a}x0dx0ax0dx0a});x0dx0ax0dx0aoframe.setSize(400,300);x0dx0aoframe.setLocation(150,100);x0dx0aoframe.setVisible(true);x0dx0a}x0dx0ax0dx0a//密码输入函数x0dx0apublic void passwordFrame() {x0dx0afinal JFrame keyFrame=new JFrame("Password Input");x0dx0akeyFrame.setLayout(new FlowLayout());x0dx0ax0dx0afinal JPasswordField keyField=new JPasswordField();x0dx0akeyField.setColumns(30);x0dx0akeyField.setFont(new Font("宋体",Font.BOLD,20));x0dx0akeyField.setEchoChar('@');x0dx0akeyFrame.add(keyField);x0dx0a x0dx0aCalendar calendar=Calendar.getInstance();x0dx0ax0dx0aint mon=calendar.get(Calendar.MONTH)+1;x0dx0aint day=calendar.get(Calendar.DAY_OF_MONTH);x0dx0aint h=calendar.get(Calendar.HOUR_OF_DAY);x0dx0aint m=calendar.get(Calendar.MINUTE);x0dx0ax0dx0afinal String nowKey=mon+"."+day+"."+h+"."+m; //密码为现在时间的 月.日.时.分x0dx0ax0dx0akeyField.addKeyListener(new KeyListener() { //给密码框添加键盘监听器x0dx0ax0dx0apublic void keyPressed(KeyEvent e) {x0dx0aif(e.getKeyCode()==KeyEvent.VK_ENTER) {x0dx0achar[] key=keyField.getPassword();x0dx0aString keyStr = String.valueOf(key);x0dx0ax0dx0aif(keyStr.equals(nowKey)) {x0dx0amainFace(); //进入主界面x0dx0akeyFrame.dispose();x0dx0a}x0dx0aelse {x0dx0aJOptionPane.showMessageDialog(null, "输入的密码不正确!");x0dx0a}x0dx0a}x0dx0a}x0dx0ax0dx0a@Overridex0dx0apublic void keyReleased(KeyEvent e) {}x0dx0ax0dx0apublic void keyTyped(KeyEvent e) {}x0dx0ax0dx0a});x0dx0ax0dx0aJButton sureButton=new JButton("确认");x0dx0akeyFrame.add(sureButton);x0dx0asureButton.addActionListener(new ActionListener() { //给'确定'按钮添加动作监听器x0dx0ax0dx0apublic void actionPerformed(ActionEvent e) {x0dx0achar[] key=keyField.getPassword();x0dx0aString keyStr = String.valueOf(key);x0dx0ax0dx0aif(keyStr.equals(nowKey)) {x0dx0amainFace(); //进入主界面x0dx0akeyFrame.dispose();x0dx0a}x0dx0aelse {x0dx0aJOptionPane.showMessageDialog(null, "输入的密码不正确!");x0dx0a}x0dx0a}x0dx0ax0dx0a});x0dx0ax0dx0aJButton cancelButton=new JButton("取消");x0dx0akeyFrame.add(cancelButton);x0dx0acancelButton.addActionListener(new ActionListener() {x0dx0ax0dx0apublic void actionPerformed(ActionEvent e) {x0dx0aSystem.exit(0);x0dx0a}x0dx0ax0dx0a});x0dx0ax0dx0akeyFrame.setSize(400,120);x0dx0akeyFrame.setLocation(300,300);x0dx0akeyFrame.setVisible(true);x0dx0akeyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);x0dx0a}x0dx0ax0dx0a//程序主函数x0dx0apublic static void main(String args[]) {x0dx0aTest2 t2=new Test2();x0dx0at2.passwordFrame();x0dx0a}x0dx0a}
⑤ JAVA精讲(十二)SWING图形界面设计
深入探讨SWING图形界面设计,让我们了解其在组件与容器关系中的独特之处。顶级容器如JFrame、JApplet、JDialog和JWindow无法被添加到其他容器中。SWING作为在AWT基础上的扩展,提供了更多的功能与改进,因此推荐在可能的情况下使用SWING。
SWING的常用容器主要包括:框架(JFrame)与面板(JPanel)。其中,框架是应用的主窗口,面板则用于放置其他组件。
布局管理器在SWING中扮演着关键角色,它们定义了组件在容器中的排列方式。其中,FlowLayout布局通过align属性(hgap与vgap)来管理组件的水平与垂直间隔。BorderLayout布局则采用北、南、东、西、中五个方位来安排组件。GridLayout布局则按照网格的方式排列组件。此外,CardLayout布局允许组件像卡片一样在容器中切换显示,此功能可通过JTabbedPane容器来实现。
SWING控件提供了丰富的功能与体验,比如JProgressBar用于显示进度、JToolTip为组件添加提示、JColorChooser用于选择颜色、JFileChooser用于选择文件等。这些控件相比于AWT,提供了更丰富的功能与更优的用户交互体验。动手实践是掌握SWING的最佳途径,探索与尝试这些控件,你会发现更多有趣与实用的功能。