Java Swing编程

Java编程教程-Java Swing 教程 Java Swing 教程是 Java Foundation Classes (JFC) 的一部分,用于创建基于窗口的应用程序。它建立在 AWT (Abstract Windowing Toolkit) API 的基础上,完全使用 Java 编写。与 AWT 不同,Java Swing 提供了平台无关和轻量级的组件。 阅读详情

JAVA编写的记事本

package demo1;

import java.io.*;
import java.awt.BorderLayout;
import java.awt.event.*;

import mypackage.FileHelper;
import mypackage.WriteStyle;

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.plaf.FileChooserUI;
public class UIdemo02 extends JFrame implements ActionListener
{    
	//窗口初始大小
	int width = 500,height = 400;
	JPanel panel;    
	JMenuBar bar;    
	JMenu fileMenu,editMenu,helpMenu;    
	JMenuItem OpenO,NewN,SaveS,SaveasA,CutT,CopyC,PasteP,AboutA; 
	JTextArea textArea = null;    File tempFile = null;   
	JScrollPane jscroll;
	public UIdemo02()
	{    
		//构造方法        
		this.setTitle("新概念记事本V1.0版本");
		this.setSize(width,height);  
		//获得窗口面板容器
		panel = (JPanel)this.getContentPane();       
		//创建窗口菜单条
		bar = new JMenuBar();     
		fileMenu = new JMenu("文件F");//顶层菜单    
		fileMenu.setMnemonic('F'); //设定快捷键操作   
		editMenu = new JMenu("编辑E");     
		editMenu.setMnemonic('E');      
		helpMenu = new JMenu("帮助H");     
		helpMenu.setMnemonic('H');  
		
		//创建子菜单项
		OpenO = new JMenuItem("打开O");     
		OpenO.setMnemonic('O');       
		NewN = new JMenuItem("新建N");  
		NewN.setMnemonic('N');       
		SaveS = new JMenuItem("保存S");      
		SaveS.setMnemonic('S');      
		SaveasA = new JMenuItem("另存A");      
		SaveasA.setMnemonic('A');      
		CutT = new JMenuItem("剪切C");     
		CutT.setMnemonic('t');       
		CopyC = new JMenuItem("复制C");    
		CopyC.setMnemonic('C');      
		PasteP = new JMenuItem("粘贴P");      
		PasteP.setMnemonic('P');       
		AboutA = new JMenuItem("关于A");     
		AboutA.setMnemonic('A');       
		fileMenu.add(OpenO);       
		fileMenu.add(NewN);        
		fileMenu.add(SaveS);   
		fileMenu.add(SaveasA);    
		//添加菜单到工具条
		bar.add(fileMenu);       
		editMenu.add(CutT);  
		editMenu.add(CopyC);  
		editMenu.add(PasteP);    
		bar.add(editMenu);     
		helpMenu.add(AboutA);    
		bar.add(helpMenu);  
		
		//为文本框添加滚动条
		JPanel jpanel=new JPanel(new BorderLayout());
		jpanel.setBounds(10, 100, 200, 100);
		textArea = new JTextArea();
		textArea.setEditable(false);//不能编辑
		jscroll=new JScrollPane(textArea);
		jpanel.add(jscroll);
		panel.add("North",bar);       
		panel.add("Center", jpanel); 
		this.InitListener();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		setVisible(true);  
		
		NewS_click(null);
     
    }    
	
	/**
	 * 初始化窗体控件监听器
	 */
	private void InitListener()
	{
		//打开
		OpenO.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				OpenO_click(arg0);
			}
		});
		
		//新建
		NewN.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				NewS_click(arg0);
			}
		});
		
		//保存
		SaveS.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SaveS_click(e);
			}
		});
		//另存
		SaveasA.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SaveasA_click(e);
			}
		});
		AboutA.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				AboutA_click(arg0);
			}
		});
	}
	
	
	
	//打开事件处理
	public void OpenO_click(ActionEvent evt)
	{
		//文件打开对话框
		JFileChooser jfc=new JFileChooser();
		jfc.setDialogTitle("打开记事文件");
		jfc.showOpenDialog(panel);
		tempFile=jfc.getSelectedFile();
		textArea.setText(FileHelper.ReadAllText(tempFile.getAbsolutePath()));
		textArea.setEditable(true);
	}
	//新建事件处理
	public void NewS_click(ActionEvent evt)
	{
		//处理新建
		tempFile=null;
		textArea.setEditable(true);   
		textArea.setText(null);   
	}
	
	//保存事件处理
	public void SaveS_click(ActionEvent evt)
	{
		//检查是否有数据保存
		if(textArea.getText().length()<=0)
		{
			JOptionPane.showMessageDialog(panel,"没有数据可用于保存");
			return;
		}
		//覆盖、创建标识
		int flag=0;
		//是否打开文件
		if(tempFile==null)
		{
			//文件打开对话框
			JFileChooser jfc=new JFileChooser();
			jfc.setDialogTitle("保存记事文件");
			jfc.showSaveDialog(panel);
			tempFile=jfc.getSelectedFile();
			flag=1;//新建
		}
		WriteStyle wstyle=flag==0?WriteStyle.overlaid:WriteStyle.create;
		//将数据存入磁盘文件
		boolean ret=FileHelper.WriteAllText(textArea.getText(), tempFile.getAbsolutePath(),wstyle);
		if(ret==false)
		{
			JOptionPane.showMessageDialog(panel,"数据保存失败");
		}
	}
	
	//另存事件处理
	public void SaveasA_click(ActionEvent evt)
	{
		//检查是否有数据保存
		if(textArea.getText().length()<=0)
		{
			JOptionPane.showMessageDialog(panel,"没有数据可用于保存");
			return;
		}
		//选择文件
		JFileChooser jfc=new JFileChooser();
		jfc.setDialogTitle("另存为");
		jfc.showSaveDialog(panel);
		tempFile=jfc.getSelectedFile();
		String filepath=tempFile.getAbsolutePath();
		//选择文件是否已经存在
		if(FileHelper.FileExists(filepath))
		{
			int ret= JOptionPane.showConfirmDialog(panel, "文件已存在,是否覆盖?");
			JOptionPane.showMessageDialog(null, ret);
			if(ret==0)
			{
				//覆盖
				boolean bret= FileHelper.WriteAllText(textArea.getText(), filepath, WriteStyle.create);
				if(!bret)
				{
					JOptionPane.showConfirmDialog(panel, "数据保存失败");
				}
			}
		}
		
		//将数据存入磁盘文件
		boolean bret=FileHelper.WriteAllText(textArea.getText(), filepath, WriteStyle.create);
		if(!bret)
		{
			JOptionPane.showConfirmDialog(panel, "数据保存失败");
		}
	}
	
	//关于事件处理
	public void AboutA_click(ActionEvent evt)
	{
		tempFile=null;
		textArea.setText("新概念记事本V1.0\nQQ:1533696518\n编写思路参考至http://zhidao.baidu.com/question/217267049.html");
		textArea.setEditable(false);
	}

	public void actionPerformed(ActionEvent event)
	{  
		
	}
	public static void main(String []args)
	{                  //主函数      
		new UIdemo02(); 
	}
}


其中用到的FileHelper类源码在文章列表中

Java-GUI 编程之 Swing 🚀 优质资源分享 🚀 学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 Swing概述 实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。 Swing是由100%纯 Java实现 阅读详情

相关推荐

Java GUI编程实例大全:Swing库深入应用

在当今的软件开发领域,用户界面(User Interface,UI)不仅提升了用户体验,而且成为产品成功的关键因素之一。Java图形界面编程,尤其是Swing库,为开发者提供了创建复杂、跨平台GUI应用程序的工具。本章将为读者提供Java图形界面编程的入门知识,引导读者理解Swing框架的核心优势,以及如何开始创建基础的用户界面。Swing提供了一系列丰富的组件,供开发者用于构建复杂的GUI应用。以下是一些常用的Swing组件:JFrame。

weixin_42298254的博客 796

Java图形化界面编程超详细知识点(5)——Swing编程

本篇文章主要介绍Java图形化界面编程中Swing类库的详细知识点总结,方便大家在图形化界面编程时快速找到自己所需要的方法,希望对大家完成课设有所帮助。

m0_66908465的博客 1万+

Java Swing图形界面编程与事件处理

本章深入探讨了Java Swing库及其在面向对象编程中的应用。首先介绍了图形用户界面(GUI)的基础知识,包括用户与程序交互的方式和设计用户界面时需要考虑的要素。随后,从面向对象的视角详细介绍了Swing框架,包括如何使用Swing构建GUI应用程序,并通过简单的例子展示了Swing处理用户事件的方法。最后,讨论了模型-视图-控制器(MVC)设计模式,并展示了如何利用该模式开发一个基于Swing的简单应用程序。

weixin_28888459的博客 486

Java图形化界面编程——Swing编程

Swing是完完全全由Java实现的,不再依赖本地平台的GUI,因此可以在所有平台上都保持相同的界面外观,独立于本地平台的Swing组件被称为轻量级组件;而依赖于本地平台的AWT组件被称为重量级组件。由于Swing的所有组件完全采用Java实现,不再调用本地平台的GUI,所有导致Swing图形界面的显示速度要比AWT图形界面的显示速度慢一些,但相对于快速发展的硬件设施而言,这种微小的速度差距并无大碍。

qq_32442911的博客 3372

ZYNQ裸机LWIP双网口实现

文章目录前言一、LWIP双网口二、使用步骤1.部分说明2.部分代码总结 前言 一、LWIP双网口 由于项目需要多通讯口,查阅资料发现lwip支持多网口操作。于是,就开搞了。 二、使用步骤 1.部分说明 利用xemac_add函数在网卡链表中添加一个网卡,即使用netif块重复xemac_add操作。 先用轮询的方式实现双网口,后期修改为中断模式 2.部分代码 导入官方例程LWip echo server, 修改main函数,增加一个netif块 #if LWIP_IPV6==0 #if L..

weixin_35865280的博客 1万+

questasim的傻瓜式安装与仿真教程

一、安装 1、下载软件 链接:https://pan.baidu.com/s/1S05AnO_w-wy6RsAj_kdUXg 提取码:p2nt 2、根据电脑类型是32位还是64位,解压不同安装包。 解压得: 2、运行.exe文件,出现: 问题及解决办法: 这是杀毒软件造成的,因此在安装过程中关闭杀毒软件即可。关闭之后,再次运行.exe文件。 3、点击下一步,进入选择安装位置界面,如下:选择好安装位置后点击下一步。 4、点击同意 5、接下来等待安装结束即可,在安装过程中,会跳出来弹框,询问是否要添

树下等苹果的博客 3万+

java图形化界面编程-Swing 编程

​ 前一章己经介绍过AWT和Swing 的关系 , 因此不难知道 : 实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。 Swing是由100%纯 Java实现的,不再依赖于本地平台的 GUI, 因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件;而依赖于本地平台的 AWT 组件被称为重量级组件。 ​

憨的很正经的博客 911

微信支付V2,jsapi支付拉起收银台报错:调用支付JSAPI缺少参数:total_fee

拉起收银台报错

m0_54355172的博客 3873

Java——Swing详解

目录Swing1、Swing和MVC设计模式2、布局管理2.1、布局管理器2.2、边框布局2.3、网格布局3、文本输入3.1、文本域3.2、标签和标签组件3.3、密码域3.4、文本区3.5、滚动窗格4、选择组件4.1、复选框4.2、单选按钮4.3、边框4.4、组合框4.5、滑动条5、菜单5.1、菜单构建5.2、菜单项中的图标5.3、复选框和单选按钮菜单项5.4、弹出菜单5.5、键盘助记符和加速器5.6、启用和禁用菜单项5.7、工具条5.8、工具提示6、复杂的布局管理6.1、网格包布局1)、gridx、gri

吴声子夜歌的博客 1万+

别再只用GPS了!用Android手机传感器实现室内步行轨迹记录(避坑指南)

本文详细介绍了如何利用Android手机传感器(如加速度计、陀螺仪和磁力计)实现室内步行轨迹记录,克服GPS在室内的局限性。通过传感器数据采集、步态检测、航向估计和轨迹绘制等步骤,结合避坑指南和优化技巧,帮助开发者高效构建室内定位应用。

weixin_26821003的博客 274

行政数据分析大屏实战:用Tableau从Excel到看板的完整搭建流程(含数据连接与字段计算避坑)

本文详细介绍了如何利用Tableau从Excel数据源搭建行政数据分析大屏的完整流程,涵盖数据准备、连接技巧、计算字段优化、看板设计及动态交互部署。通过五阶工作流,帮助用户高效处理多源异构数据,实现业务洞察与可视化呈现,提升行政数据分析效率。

weixin_29696711的博客 338

Java Swing 编程全面解析:从 AWT 到 Swing 的进化之路

Java 提供了强大的图形用户界面(GUI)工具,用于创建跨平台的桌面应用程序。从早期的 AWT(Abstract Window Toolkit)到更先进的 Swing,Java GUI 编程逐步演进,解决了跨平台一致性、组件丰富性以及性能等问题。本篇博客将详细讲解从 AWT 到 Swing 的过渡。一、AWT 简介1. 什么是 AWT?

2302_79376097的博客 1458

QT5.14.2离线安装包保姆级教程:断网、选组件、避坑全记录

本文详细介绍了QT5.14.2离线安装包的完整流程,特别针对Windows平台开发者提供断网安装、组件选择及避坑指南。作为QT5系列中最后一个免费离线版本,5.14.2具有免注册、全组件离线安装等独特优势,是开源开发者的理想选择。文章涵盖从环境准备到安装后配置的全方位指导,帮助开发者高效完成安装并避免常见问题。

weixin_30924087的博客 578

Java中Swing编程JFrame窗口的使用

Java中GUI程序的编写离不开Swing和AWT编程。Swing组件包含JFrame, JApplet, JDialog和JWindow等容器,我们简单地学习下JFrame的基本使用。

CheerForU 1万+

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4614

【差分运放电路加偏置电压

摘要:该电路采用单电源供电运放(A3V3)处理双极性差分信号,通过1V直流偏置解决负半周信号削波问题。关键设计包括:15kΩ/10kΩ电阻分压建立1V基准,对称电阻网络实现2.5倍差分放大,0.1μF电容滤除电源噪声。适用于传感器信号调理(如电流采样、压力传感)和3.3V系统处理±0.5V交流信号,输出0-2.5V适配ADC输入。注意事项强调电阻匹配对共模抑制的重要性,以及电源滤波电容需靠近运放引脚布局。

qq_37999850的博客 562

今天学习Java Swing编程

        今天开始学习Java的Swing编程,以前从来没有做过这类图形的桌面程序,这是第一次。觉得太困难了,尤其是窗口布局的管理,如果要实现一个稍微特殊一点(其实也不是特殊,只是组件不对齐)的窗口,要写很多的代码,还不一定合适。也许是我的水平太低吧。        不知道有没有图形化的Java编程工具,能够象VB一样,搭搭积木就把界面完成的呢? 

afrag的专栏 1857

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java swing编程

Swing编程的一般步骤: Ø  继承Jframe窗体 Ø  定义组件 Ø  创建组件(这个过程在构造函数里面进行) Ø  设置容器的布局管理器 Ø  往相应的容器里面添加组件 Ø  设置窗体如:frame.setSize(100,100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocatio

peach90的专栏 654

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java Swing图形化编程的概述(1)

学习Java Swing图形化编程,我们首先要了解三个最基本的概念:顶层容器,控件,布局。 下面就来介绍一下这三个基本概念 1.顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候,图在哪里绘制呢?我们需要一个能够提供图形绘制的容器,这个容器就被称为顶层容器,你也可以把它想象成一个窗口。顶层容器是进行图形编程的基础,一切图形化的东西,都必然包括在顶层容器中。在Swing中,我

ouyp0627的专栏 1879

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java 程序编码规范 编程技巧 Swing 调试

2004-3-21 星期日(Sunday) 小雨Java 程序编码规范 编程技巧 Swing 调试克隆方法如果这个类是可以被克隆的,那么下一步就是 clone 方法: public Object clone() { try { CounterSet obj = (CounterSet)super.clone(); obj.packets =

Agile Programing 1246

Java的swing编程(一)

以下是学习java核心技术卷一swing编程的心得,摘录下来以备回顾 框架 在Java中,顶层窗口被称为框架。在AWT中,有一个被称为Frame的类用于描述顶层窗口。这个类的swing版本名称是JFrame,扩展与Frame类。用于修饰部件,由用户的窗口系统负责绘制。以下为显示一个空框架的简单代码: public class FrameTest { public static void

HAOTAO_LAI的博客 873

Java中的Swing及AWT又称GUI编程

Java中的Swing及AWT又称GUI编程。 关于学习Java要不要学Swing及AWT,这个完全取决于个人的开发及发展方向。 如果从事web方向的开发,则可以不用学习Swing及AWT。 如果从事的是GUI编程或C/S模式的编程,则要学习Swing及AWT。 1 package Com.MySwing; 2 import javax.swing.JFrame; ...

dengjuanshou7445的博客 163

Java GUI基础学习——AWT+Swing图形化用户界面编程

本博客讲解Java GUI中的知识点,包括Swing和AWT包下的工具类用法,包括Frame弹框、Panel面板,输入框、单选框、多选框、画图工具、监听事件等。

Designer 小郑的技术博客 1437

Java中swing编程中界面组件加载不出的问题

前段时间在用Java进行swing编程中出现的一个小问题,今天突然想起来,记录下来 练习时编写了一个简单的随机数生成器,代码如下: package NumberGenerator; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.Ac...

qq_36425800的博客 4962

Java Swing图形化编程之JTextArea

// 是否自动换行,默认为 false void setLineWrap(boolean wrap) // 设置自动换行方式。如果为 true,则将在单词边界(空白)处换行; 如果为 false,则将在字符边界处换行。默认为 false。 void setWrapStyleWord(boolean word) // 获取文本框中的文本 String getText() // 追加文本到文档末尾 void append(String str) // 替换部分文本 void replaceRange(Strin

qdwd888的博客 668

【JAVA】<GUI编程>AWT & Swing 图形化编程库

目录 一、GUI编程概述: 二、AWT: 1.AWT简介: 2.组件和容器: 2.1 窗体frame: 2.2 面板Panel: 3.布局管理器: 3.1 流式布局: 3.2 东西南北中: 3.3 网格布局:Grid 4.事件监听: 5.输入框:TextField监听 画笔: 鼠标监听: 窗口监听: 键盘监听: 三、Swing: Swing简介: Swing 类库结构 Swing 容器 JFrame窗体: JDialog弹窗: Icon、ImageIcon标..

范同学的学习历程 975
上一篇: Linux 进程管理
下一篇: Linux启动流程(摘自鸟哥)
IT回忆录
博客等级 码龄16年 42粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值