热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javagui组件_JAVAGUI界面组件学习

这周主要练习了GUI界面组件,设计了一个登陆界面,整体运用BorderLayout界面,将界面分为上、中、下,又将中间部分分

这周主要练习了GUI界面组件,设计了一个登陆界面,整体运用BorderLayout界面,将界面分为上、中、下,又将中间部分分为三层,运用了组合框来记录登陆ID,添加了复选框完善程序,基本实现了登陆界面的操作,需要进一步学习IO流让自己的程序可以添加登陆记录。以下是我的程序源代码(注:考虑到是登陆界面所以界面大小固定)。

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

public class loginframe extends JFrame{

String number[]={"2014330111","2014330112","2014330113","2014330114","2014330115","2014330116","2014330117"};

private JComboBox combo;

private JPasswordField passField;

public loginframe(){

this.setTitle("登录界面");

this.setSize(250, 180);

this.setResizable(false);

this.setLocationRelativeTo(this);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setContentPane(createContentPanel());

}

private JPanel createContentPanel(){

JPanel panel=new JPanel(new BorderLayout());

panel.add(BorderLayout.NORTH,createNPanel());

panel.add(BorderLayout.CENTER,createCeterPanel());

panel.add(BorderLayout.SOUTH,createSPanel());

return panel;

}

private JPanel createNPanel(){

JPanel panel=new JPanel();

panel.add(new JLabel("登陆系统"),JLabel.CENTER);

return panel;

}

private JPanel createCeterPanel(){

JPanel panel=new JPanel(new BorderLayout());

panel.add(BorderLayout.NORTH,createIDPassPanel());

panel.add(BorderLayout.SOUTH,createOptionsPanel());

return panel;

}

private JPanel createOptionsPanel() {

JPanel panel=new JPanel();

JCheckBox box1=new JCheckBox("记住密码");

JCheckBox box2=new JCheckBox("自动登录");

panel.add(box1);

panel.add(box2);

return panel;

}

private JPanel createIDPassPanel(){

JPanel panel=new JPanel(new GridLayout(2,1));

panel.add(createIDPanel());

panel.add(createPassPanel());

return panel;

}

private JPanel createPassPanel(){

JPanel panel=new JPanel(new BorderLayout());

JLabel label=new JLabel("密码:");

passField=new JPasswordField(10);

panel.add(BorderLayout.WEST,label);

panel.add(BorderLayout.CENTER,passField);

return panel;

}

private JPanel createIDPanel(){

JPanel panel=new JPanel(new BorderLayout());

JLabel label=new JLabel("账号:");

combo=new JComboBox(number);

combo.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

}

});

panel.add(BorderLayout.WEST,label);

panel.add(BorderLayout.CENTER,combo);

return panel;

}

private JPanel createSPanel(){

JPanel panel=new JPanel();

JButton loginBtn=new JButton("登陆");

loginBtn.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

if(JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(null,"确认要登陆吗?")){

System.exit(0);}

}});

JButton cancelBtn=new JButton("取消");

panel.add(loginBtn);

panel.add(cancelBtn);

cancelBtn.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

if(JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(null,"确认要退出吗?")){

System.exit(0);}

}

});

return panel;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new loginframe().setVisible(true);

}

}

6b698f4019b5c1a03522853a7db1ed75.png

91d89d6e6c8166c94ad04ecafc36d9a2.png

52a3ddc73867357f73864e19754fb34d.png

a7434cc649d571fa39db0e96091ef621.png



推荐阅读
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • JComponentJLabel的setBorder前言用例2205262241前言setBorder(Border边框)实现自JComponentjava.awt.Insets ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 基于 Vue 和 Element UI 实现的简洁登录界面设计
    本文介绍了一种利用 Vue.js 和 Element UI 框架构建的简洁登录界面设计。该设计不仅注重用户体验,还确保了界面的美观性和易用性。通过合理的布局和组件配置,实现了高效、响应式的登录功能,适用于多种前端应用场景。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
author-avatar
小猪爱情守护者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有