界面的容器包括窗体(JFrame)和面板(JPanel),一个界面有且只有一个窗体,面板是仅小于窗体的容器。
容器上面可以加各种组件,包括标签(JLabel),文本输入框(JTextField),复选框(JCheckBox),密码框(JPasswordField),按钮(JButton),下拉框(JComboBox)
菜单栏的添加 对象.setJMenuBar();实例化一个菜单栏,然后向上面添加菜单项以及在菜单项上添加菜单子项
容器上的组件必然是按照一定顺序排列起来的,不可能杂乱无章,所以就有了布局类,常用的有边框布局(BorderLayout),流式布局(FlowLayout),网格布局(GridLayout)
主要的方法举例:A a = new B();//实例化一个对象
a.set*****(***);//设置对象的属性
a.add(********);//向对象上加组件
所有的操作都可以概括为这几点,具体方法不必死记,需灵活应用。
下面是QQ登陆界面和计算器界面:
下面是源代码:
package cn.kml.login; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; /** * 用于实现QQ登陆界面 * @author 陌陌 */ public class QQLogin { public static void main(String[] args) { //实例化一个Login类对象 QQLogin log=new QQLogin(); //调用初始化界面的方法 log.initUI(); } //定义一个初始化界面的方法 public void initUI(){ //实例化一个JFrame对象 javax.swing.JFrame jf = new javax.swing.JFrame(); //设置对象的属性 jf.setSize(381,290); jf.setUndecorated(true); jf.setLocationRelativeTo(null); jf.setTitle("QQ登录界面"); // jf.setDefaultCloseOperation(3); jf.setResizable(false);//设置窗体不可最大化 /*****************************设置窗体的背景*****************************************/ //实例化一个图标对象 ImageIcon background = new ImageIcon("images/background.png"); //实例化一个标签对象 JLabel jlb = new JLabel(background); //设置标签的大小 jlb.setBounds(0,0, background.getIconWidth(), background.getIconHeight()); //将标签添加到LayeredPane的最底层 jf.getLayeredPane().add(jlb, new Integer(Integer.MIN_VALUE)); //将LayeredPane上一层的面板设置为透明 JPanel contentPanel = (JPanel)jf.getContentPane(); //设置面板为透明 contentPanel.setOpaque(false); /******************************窗体的北边**********************************************/ //实例化一个面板对象 JPanel jpn=new JPanel(); jpn.setOpaque(false);//设置为透明 jpn.setPreferredSize(new Dimension(379,142)); //设置面的布局为流式布局,靠右显示 jpn.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0)); //在面板上加上三个按钮 //添加三个图标对象 String[] button ={"images/set.png","images/min.png","images/close.png"}; String[] command = {"a","b","c"}; CloseListener clis = new CloseListener(jf,jpn); for(int i=0;i<3;i++){ ImageIcon close = new ImageIcon(button[i]); JButton buset = new JButton(close); buset.setActionCommand(command[i]); buset.setPreferredSize(new Dimension(27,17)); jpn.add(buset); buset.addActionListener(clis); } jf.add(jpn,BorderLayout.NORTH); /*****************************窗体的西边**********************************************/ //实例化一个面板对象 JPanel jpw=new JPanel(); jpw.setOpaque(false); //设置版面的布局 jpw.setLayout(new FlowLayout(FlowLayout.RIGHT,15,3)); //实例化一个ImageIcon对象 ImageIcon im2=new ImageIcon("images/head.png"); //实例化一个便签对象,显示图标对象 JLabel jlw=new JLabel(im2); jpw.add(jlw); //把面板对象加到窗体的西边 jf.add(jpw,BorderLayout.WEST); /******************************窗体的中间**********************************************/ //实例化一个面板对象 JPanel jpc=new JPanel(); jpc.setOpaque(false); //设置面板的布局类型为流式布局类型,左边对齐 jpc.setLayout(new FlowLayout(FlowLayout.LEFT,20,5)); //实例化一个下拉框类的对象,显示已登录 javax.swing.JComboBox jc = new javax.swing.JComboBox(); jc.addItem("请输入QQ"); jc.addItem("758768990"); jc.addItem("655467677"); jc.addItem("65454343"); jc.setPreferredSize(new Dimension(164,24)); jc.setEditable(true); jpc.add(jc); //实例化一个标签对象,显示注册账号。 javax.swing.JLabel jl1 = new javax.swing.JLabel("注册账号"); jl1.setOpaque(false); jpc.add(jl1); //实例化一个下拉框类的对象,显示”请输入密码“ javax.swing.JPasswordField jc1 = new javax.swing.JPasswordField(); jc1.setPreferredSize(new Dimension(164,24)); jc1.setEditable(true); jpc.add(jc1); //实例化一个标签对象,显示找回密码 javax.swing.JLabel jl2 = new javax.swing.JLabel("找回密码"); jl2.setOpaque(false); jpc.add(jl2); //实例化两个复选框 JCheckBox jch1=new JCheckBox("记住密码"); JCheckBox jch2=new JCheckBox("自动登录"); jch1.setOpaque(false); jch2.setOpaque(false); jpc.add(jch1); jpc.add(jch2); jf.add(jpc,BorderLayout.CENTER); /*********************窗体的南边********************************************/ //实例化一个面板对象 JPanel jpno=new JPanel(); jpno.setOpaque(false); //实例化一个图标对象 ImageIcon login = new ImageIcon("images/login.png"); //实例化一个按钮类的对象,显示登陆。 JButton jb = new JButton(login); jb.setPreferredSize(new Dimension(156,31)); jpno.add(jb); jf.add(jpno,BorderLayout.SOUTH); jf.setVisible(true); //窗体可见之后,给关闭按钮添加一个监听器 } }
package cn.kml.login; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public class CloseListener implements ActionListener{ private JFrame jf; private JPanel jpn; public CloseListener(JFrame jf,JPanel jpn){ this.jf=jf; this.jpn=jpn; } //重写 public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("c")){ jf.setVisible(false); } } }
package cn.kml.counter; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTextField; public class Counter { public static void main(String[] args) { //实例化一个Counter对象 Counter co=new Counter(); co.COUNT(); } private Component jbu; //初始化一个计算器界面 private int j; private JButton jbut; public void COUNT(){ //实例化一个JFrame对象 JFrame jf=new JFrame(); //设置对象的属性 jf.setSize(250,353); jf.setTitle(" 计算器"); jf.setLocationRelativeTo(null); //jf.setUndecorated(true); jf.setDefaultCloseOperation(3); jf.setResizable(false); /*********************设置窗体的菜单栏**********************/ //实例化一个菜单栏对象 JMenuBar jm = new JMenuBar(); //实例化一个菜单项对象 JMenu jm1 = new JMenu("查看(V)"); //在菜单项中添加菜 JMenuItem jit = new JMenuItem("标准型(T)"); JMenuItem jis = new JMenuItem("科学型(S)"); jm1.add(jit); jm1.add(jis); jm.add(jm1);//添加到菜单栏中 JMenu jm2 = new JMenu("编辑(E)"); //在菜单项中添加菜单子项 JMenuItem jic = new JMenuItem("复制(C) Ctrl+C"); JMenuItem jiv = new JMenuItem("粘贴(V) Ctrl+V"); jm2.add(jic); jm2.add(jiv); jm.add(jm2); JMenu jm3 = new JMenu("帮助(H)"); //在菜单栏中设置菜单子项 JMenuItem ji = new JMenuItem("查看帮助(V)"); jm3.add(ji); jm.add(jm3); jf.setJMenuBar(jm); /********************设置计算器的背景**********************/ //实例化一个图标对象 ImageIcon bg = new ImageIcon("image/bg1.png"); //实例化一个标签对象 JLabel jlb = new JLabel(bg); //设置标签的大小 jlb.setBounds(0, 0, bg.getIconWidth(),bg.getIconHeight()); //把标签添加到LayeredPane的最底层 jf.getLayeredPane().add(jlb,new Integer(Integer.MIN_VALUE)); //把LayeredPane的上一层设置为透明 JPanel contentPanel = (JPanel)jf.getContentPane(); //设置面板为透明 contentPanel.setOpaque(false); /*********************窗体的北边*************************/ JPanel jp1=new JPanel(); jp1.setOpaque(false); //实例化一个文本输入框 JTextField jt=new JTextField(); jt.setText("0"); jt.setHorizontalAlignment(JTextField.RIGHT); jt.setFont(new Font("楷体",Font.BOLD,35)); jt.setEditable(false); jt.setPreferredSize(new Dimension(208,54)); jp1.add(jt); jf.add(jp1,BorderLayout.NORTH); /*******************************窗体的西边*******************************************/ //实例化一个版面对象 JPanel jpw = new JPanel(); jpw.setOpaque(false); jpw.setPreferredSize(new Dimension(192,250)); //设置面板为流式布局 jpw.setLayout(new FlowLayout(FlowLayout.RIGHT,6,6)); String[] array={"image/MC.png","image/MR.png","image/MS.png", "image/M+.png","image/ZUOJIAN.png", "image/CE.png","image/C.png","image/+-.png", "image/7.png","image/8.png","image/9.png", "image/XIE.png","image/4.png","image/5.png", "image/6.png","image/XINHAO.png", "image/1.png","image/2.png","image/3.png","image/-.png", "image/0.png","image/DIAN.png","image/+.png"}; for(int i=0;i<array.length;i++){ JButton jbu= new JButton(new ImageIcon(array[i])); if(array[i].equals("image/0.png")){ jbu.setPreferredSize(new Dimension(80,28)); jpw.add(jbu); }else{ jbu.setPreferredSize(new Dimension(38,28)); jpw.add(jbu); } } jf.add(jpw,BorderLayout.WEST); /******************窗体的东边**********************/ //实例化一个面板对象 JPanel jpe = new JPanel(); jpe.setOpaque(false); //设置面板的布局为流式布局 jpe.setLayout(new FlowLayout(FlowLayout.LEFT,0,6)); jpe.setPreferredSize(new Dimension(75,260)); String[] array1={"image/M-.png","image/GENHAO.png", "image/%.png","image/1X.png","image/=.png"}; //实例化按钮对象 for(int j=0;j<array1.length;j++){ JButton jbut= new JButton(new ImageIcon(array1[j])); if(array1[j].equals("image/=.png")){ jbut.setPreferredSize(new Dimension(38,65)); jpe.add(jbut); }else{ jbut.setPreferredSize(new Dimension(38,28)); jpe.add(jbut); } } jf.add(jpe); jf.setVisible(true); } }
相关推荐
这篇“简单的SWING界面开发”总结将帮助我们深入理解如何使用Swing来创建用户友好的桌面应用程序。 首先,Swing是Java Foundation Classes (JFC)的一部分,它是对早期AWT(Abstract Window Toolkit)的增强。Swing...
在"Java+Swing图形界面开发与案例详解"这本书中,作者深入浅出地介绍了如何使用Swing来设计和实现GUI应用。 该书的实例代码包含了从第一讲到第八讲的源码,逐步引导读者从基础到进阶掌握Swing的使用。以下是这些讲...
总的来说,Swing界面美化是Java GUI开发中的一项重要技能,通过合理利用Look-and-Feel机制和第三方库,开发者可以打造出独特且吸引人的用户界面,提升用户体验。在实际项目中,结合业务需求和个人审美,灵活运用这些...
总的来说,Java Swing提供了全面的GUI开发工具,涵盖了从简单窗口到复杂应用的各种需求。通过学习和实践这些实例代码,开发者可以熟练掌握Swing的使用技巧,提高开发桌面应用的能力。无论你是初学者还是经验丰富的...
然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对简单,不够吸引人。为了解决这个问题,开发人员通常会寻找第三方库来美化 Swing 应用程序的界面,让它们看起来更加现代和专业。 "Java Swing 界面美化包...
在《Java Swing图形界面开发与案例详解》源代码这个压缩包中,你可以找到一系列的Java源文件,每个文件对应一个Swing应用的实现。通过解压并导入到开发环境中,你可以运行这些示例,观察它们的运行效果,然后逐步...
### Swing界面开发与游戏开发详解 #### 一、Swing简介及入门 Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件来帮助开发者构建桌面应用程序。相比于AWT(Abstract Window Toolkit),Swing提供了更多...
本实例代码集是基于《Java+Swing图形界面开发与案例详解》这本书的实践教学内容,旨在帮助读者深入理解和掌握Swing在实际项目中的应用。 1. **Swing组件基础** Swing提供了一系列组件,如按钮(JButton)、文本框...
在"Java Swing图形界面开发与案例详解 .王鹏等.扫描版(前5章代码)"中,读者可以学习到以下关键知识点: 1. **基础组件**:包括JButton、JLabel、JTextField、JTextArea、JComboBox、JCheckBox、JRadioButton等基本...
在本教程中,我们将探讨Swing界面设计的一些基本概念和实践,通过一个简单的小例子来展示如何创建和定制GUI组件。 首先,Swing提供了一系列组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)等,用于...
用java写的一个 Swing 界面的 记事本,拥有文件打开 保存等基本功能,还有查找替换 以及 更换字体等功能。
在《Java Swing图形界面开发与案例详解》源代码中,可能包含了许多实用的示例,如计算器、文件浏览器、简单的数据库应用等,这些案例可以帮助读者更好地理解Swing在实际开发中的应用。通过阅读和实践这些代码,你...
4. **第十三章代码**:这部分可能涉及Swing的对话框,例如JOptionPane,用于显示警告、确认、输入等简单对话,以及自定义JDialog的使用。 5. **第四章代码**:可能会讲解Swing的菜单和菜单条(JMenuBar和JMenu),...
本demo正是一个很好的教学示例,展示了如何集成和使用Substance库来美化Swing界面。 在"main"函数中的注释,作者提供了一个简单的教程,指导如何更换皮肤。通常,这涉及到加载Substance库,创建一个自定义的LookAnd...
适合人群:初学者或有一定Java基础知识的学生和开发者,特别是想要深入了解Swing库进行简单图形界面编程的个人。 使用场景及目标:适用于Java学习过程中实战练习、理解Swing组件布局和动作事件的绑定,以及掌握基本...
本资源由王鹏和何昀峰编著,专注于Java Swing的图形界面开发与案例详解,包含全书的所有源代码,对于学习和实践Swing编程具有很高的价值。 Swing的核心概念包括组件(JComponents)、布局管理器(Layout Managers)...
Swing界面教程主要涵盖以下几个核心知识点: 1. **Swing组件**:Swing提供了一系列组件,如JButton、JLabel、JTextField、JTextArea、JComboBox、JTable等,这些组件使得开发者能够创建各种类型的用户界面。每个...
### 使用Java Swing界面实现数据库基本操作 #### 一、引言 在软件开发领域,图形用户界面(GUI)是提高用户体验的重要组成部分。Java Swing作为Java平台上的一个强大的GUI工具包,为开发者提供了丰富的组件和功能来...
在第8章“Java Swing图形界面开发与案例详解”中,作者王鹏等深入探讨了Swing在GUI设计中的应用,包括各种组件、布局管理器、事件处理以及高级功能。 一、Swing组件 Swing提供了一系列预定义的组件,如按钮...
Swing版的简单计算器,实现加减乘除,第一次写,希望大家给点建议。