
正文
java代码演示 java 代码简洁
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java代码演示 图书馆有10个座位,读者进来要登记,退出要注销。问有几个程序和进程
import java.util.concurrent.Semaphore;
/**
*
* @author Mi Zhou
*/
public class LibraryDemo {
// 主要在于理解多线程变量共享和互斥的问题
// 这里共享和互斥的变量就是 图书馆的这10个座位
// 我们用信号量 Semaphore 来表示用 10 个座位的这个图书馆
// (如果目前不知道什么是 Semaphore,建议先了解这个概念)
public static void main(String[] args) throws Exception {
// 创建有 10 个许可的信号量(在这里可以理解为图书馆,图书馆最多容纳 10 个人)
Semaphore semaphore = new Semaphore(10);
// 假设有 15 个人来图书馆读书,每个人都在图书馆待 1 秒
for (int i = 1; i = 15; ++i) {
ReaderRunnable rr = new ReaderRunnable(i, 1, semaphore);
new Thread(rr).start();
}
// 查看输出你会发现图书馆最多是同时 10 个读者在里面
}
}
// 读者线程
class ReaderRunnable implements Runnable {
private final int readerNo; // 读者编号
private final int stayTime; // 这个读者在图书馆待的时间,以 秒 计
private final Semaphore semaphore; // 当前的图书馆
public ReaderRunnable(int readerNo, int stayTime, Semaphore semaphore) {
this.readerNo = readerNo;
this.stayTime = stayTime;
this.semaphore = semaphore;
}
@Override
public void run() {
try {
// 请求进入图书馆,如果图书馆没有座位了,这个方法会阻塞,直到图书馆有座位
semaphore.acquire();
System.out.println("读者 " + readerNo + " 进入图书馆");
Thread.sleep(stayTime * 1000); // 在图书馆待着
System.out.println("读者 " + readerNo + " 离开图书馆");
semaphore.release(); // 离开图书馆
} catch (InterruptedException ex) {
ex.printStackTrace(System.err);
}
}
}
相关问答
Q1: 用java代码演示如何将一个字符串变成日期教材
参考如下:
/**
* 转换字符串为时间,格式为 format.
*/
public static Date parseDate(String format, String d) {
try {
return new SimpleDateFormat(format).parse(d);
} catch (Exception e) {
}
return null;
}
Q2: Java,已知两点坐标,设任意顶点,求弧线. 求公式及Java代码演示.
改变弧顶也是改变;圆的半径,
java的画图方法,是你输入的点画做矩形画图,圆也是一样,
X,Y并不是圆心,算一下偏移量,做一个X,Y是圆心的方法,
然后是根据两点及弧高算半径,(这是数学问题了)
知道了上面的内容就可以画你想要的弧了,
以上是思路,好长时间不画图了,有些手生,如果你不着急,周末给你贴出代码
Q3: JAVA 中的 -> 是什么意思?
本文主要是讲解 Java 中java代码演示的运算符。对于运算符而言是编程参与计算的基础核心内容。最基础的加减乘除取余。到后面的逻辑运算大于小于等于不等于。
本文内容思维导图
先从最简单的算术运算符说起。
算术运算符
算术运算符又分为: 一元运算符和二元运算符, 并且在 Java 中包含三元运算符, 就是条件运算符或者叫作三目运算符只是名字不同,含义相同。
一元运算符
一元运算符只有一个变量就可以进行操作。常用的一元运算符就是自加,自减。一共四个一元运算符。
示例代码, 这里使用 JShell 快速查看结果。
需要注意其中的自加和自减的规则。当运算符在前的时候 ++ a; 运算符的优先级比较高, 所以会先处理这个代码, 所以可以看到代码里面直接返回了结果 4。但是 a ++ 的时候却没有直接返回结果, 因为java代码演示他的运算符比价低。 所以重新调用该变量就会打印出来当前的值。
代码定义如下:
运行查看结果:
二元运算符
二元运算符一共5个。分辨是加减乘除取余(+、-、*、/、%)。
其中,在进行除法运算的时候,遵守除数不能为 0;
如果除数为 0 就会报错, 错误如下:
代码示例如下:
运行查看结果,编译, 运行:
赋值运算符
对于赋值运算符基本上贯穿了整个类的周期。常用的 = 赋值。 和简写赋值和算术运算符的使用方式。赋值运算符有如下图所示的使用方式。
使用 JShell 进行测试代码如下:
代码示例如下:
int a = 0;
a = 3;
System.out.println(a);// 3
a += 3;
System.out.println(a);// 6
a -= 3;
System.out.println(a);// 3
a *= 3;
System.out.println(a);// 9
a /= 3;
System.out.println(a);// 3
a %= 2;
System.out.println(a);// 1
比较运算符
比较运算符, 也可以说是布尔运算符。 主要是比较两个表达式的结果。 (表达式) 操作符 (表达式)
根据上面的运算符进行案例演示, 一定要动手练习。 更能加深印象。
只要知道比较运算是最终得到一个布尔类型的值。并且在进行比较运算的时候, 一定要注意其优先级。代码这次自己动手做吧。 有上面的演示, 应该很容易就搞定。
逻辑运算符
对于逻辑运算符, 主要就是 3 个。 逻辑与、逻辑或、逻辑非。和数学中的与或非意思一致。
格式: 表达式1 逻辑运算符 表达式2
逻辑运算符大多数情况下会和其他的运算符一起使用, 主要做一些简单或复杂的逻辑运算。 并且通常都是和 if, for 等逻辑表达式一起使用。
简单的说一说, 对于逻辑与和逻辑或不同点。 逻辑与为第一个表达式和第二个表达式都等于真值的情况下才会表达式成立。 逻辑或是第一个表达式为真值的情况下, 就不会在执行第二个表达式。 因为不管第二个表达式是否成立, 该逻辑运算都是真值了。
位运算符
对于任何编程语言而言, 最终的操作都是二进制表示, 因为计算机只认识二进制, 而八进制,十进制或者十六进制都是为了让开发人员方便开发。对于 Java 来说, 也可以针对数的某个值进行运算。这就需要位运算符的参与了。也是为了方便对二进制进行操作。
位运算符主要有一下运算符:
位与
按位与和逻辑运算符的逻辑与很类似,一个比较的表达式, 一个是按照位来进行判断。在二进制中, 位与的判断为都为 1 的记做 1 否则记做 0。
按位与规则如下:
0 0 = 0;
0 1 = 0;
1 0 = 0;
1 1 = 1;
先看一个都是正整数的值 10 2。
最终得出结果 0000 1010 0000 0010 = 0000 0010 转换成十进制就是2。
对于负值的位与运算有点区别的地方就是参与运算的是补码。
举例说明: 10 -2
具体如何得到补码, 可以参考我之前写的文章基础类型的相互转换。这里对于负值的情况需要了解什么是原码,反码和补码。参与运算的是补码。-2 的原码是 1000 0010 反码是 1111 1101 补码 在反码的基础最后一位加 1 得到1111 1110。
最终结果得到 0000 1010 1111 1110 = 0000 1010 十进制也就是 10。
这个时候怎么校验结果是否正确呢? 直接写 Java 代码就好了, 打开 jshell:
位或 |
按位或, 和逻辑或很类似, 只要二者有一位 1 结果就是 1。
按位或规则如下:
0 | 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 1;
根据上面的运算得到了 10 | 2 = 10。
负值有略有不同。
还是要灵活运用原码反码和补码,特别是负数的情况下, 因为正数的原码和补码一致。
位反 ~
按位反, 和逻辑非类似。 是对位进行直接取反。
按位反规则如下:
~1 = 0;
~0 = 1;
先用 2 进行运算处理:
在进行 -2 的运算操作
-2 的原码 需要转换成补码, 用补码进行取反运算。 得到 1 的二进制。
代码演示如下:
位异或 ^
位异或是基于二进制的位运算。 采用符号 XOR 在 Java 中使用 ^ 进行表示。两个值相同取 0, 不同的取 1。
按位异或规则如下:
1 ^ 1 = 0;
0 ^ 0 = 0;
1 ^ 0 = 1;
0 ^ 1 = 1;
举例 10 ^ 2
举例 10 ^ -2
代码演示结果的准确性:
异或在代码优化和实际的工作中会经常用到。 后续实战中用到了在详细分析用法, 现在知道进行异或运算即可。
位左移
将一个操作数进行二进制位往左移, 移动后空出来的低位用 0 进行填充。移除的高位舍去。高位丢弃,低位补零。
操作数 移动的位数
举例说明 10 2
位左移代码演示:
位右移
将一个操作数进行二进制往右移, 移动后,有两种情况,一种有无符号一种是有符号。也就是最高位为 0 移动后高位补 0, 如果最高位(符号位)为 1, 移动后空缺位都为 1.
操作数 移动的位数
举例说明 10 2
对于负数举例 -2 2 空缺位补 1:
位右移代码演示:
注意这两者的区别。
无符号位右移
这个是和右移操作上是一致的, 但是不管是否最高位(符号位)为 1, 空缺位都使用 0 进行补齐。
操作数 移动的位数
举例说明 10 2
对于负数来说。 这里有点区别, 因为对于负值来说, 上面其实都是 32 位, 为了让大家看起来舒服转换成了对应的 8 位的。 因为无符号位右移会改变正负值, 所以 32 位的负值和 8 位的负值是不一致的。
并且 Java 在处理 byte, short , char 等值进行移位操作前, 会先将类型转换成 int 因为 int 占用 32 位。
所以 -2 2 的时候,8 位运算应该是如下:
因为会先转换成 32 位。 所以 32 位的 -2 等于如下:
也就是结果: 1073741823
无符号位右移代码如下:
理解原理。 更能发现问题。
类型比较运算符
这里说的类型比较是对象的比较。 判断每个定义的变量是否是某个类。该类可以是(接口、抽象类)。
语法规则:
boolean = 变量 instanceof 类
举例说明:
运行查看结果:
这里需要注意:
null 值是没有引用的, 所以和任何值都不相等。
instanceof 比较的是引用类型, 不能用于基础类型的比较。
条件(三目)运算符
三目运算在 Java 中只有一个就是 ? :
三目运算的语法格式:
`布尔表达式 ? 表达式1 : 表达式2`
大部分情况下, 对于三目运算是 if 和 else 的简写。举例说明:
int a = 1; int b = 2;
String msg = a b ? "a 比 b 大" : "a 比 b 小";
System.out.println(msg);
//上面的结果和下面一致
if(a b){
msg = "a 比 b 大!";
}else{
msg = "a 比 b 小!";
}
//msg 是 "a 比 b 小!"
运算符的优先级
所有的数学运算都是从左向右进行运算的, 对于 Java 来说大部分运算也是遵守从左向右的规则。 但是一元运算符,赋值运算符和三目运算符例外。他们是从右向左进行运算。
运算符的内容告一段落, 接下来就是开始逻辑表达式的学习。 教程编写不易。希望各位大看官点赞收藏加关注。更多内容大放送。
Q4: 用java将数据导出到wps表格中,怎么实现
一:页面图片显示预览:
1)如下图:
2)点击导出按钮后预览:
3)最终生成的excel表格图片预览:
二:代码演示:
说明:执行操作时,请先引进导出excel表格的jar文件包。
找到导出按钮所执行的js方法,在java后天查看该方法的实现即可。
1)jsp代码:
[html] view plaincopyprint?
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%
%@taglib prefix="s" uri="/struts-tags" %
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%
html
head
base href="%=basePath%"
title驾校合格率排名/title
link href="jsp/commonstyle/css/tabStyle.css" rel="stylesheet" type="text/css"
link rel="STYLESHEET" type="text/css" href="%=basePath%jsp/hgltj/js/tablesort.css"
script type="text/javascript" src="%=basePath%jsp/system/common/js/publicColor.js"/script
script type="text/javascript" src="jsp/commonstyle/js/js/My97DatePicker/WdatePicker.js" defer="defer"/script
script type="text/javascript" src="%=basePath%jsp/hgltj/js/tablesort.js"/script
script language="JavaScript"
function load()
{
//根据分辨率设置表格大小
maxw=document.getElementById("maintb").offsetWidth;
if(maxw824){//1024分辨率未展开
mainbox.width="98%";
} else if(maxw1013){//1024分辨率展开
mainbox.width="98%";
} else if(maxw1081){//1280分辨率未展开
mainbox.width="95%";
} else if(maxw1270){//1280分辨未展开
mainbox.width="95%";
}else{//1280以上分辨展开
mainbox.width="98%";
}
}
/script
script
function overIt(){
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "td"){
the_obj=the_obj.parentElement;
the_obj.oBgc=the_obj.currentStyle.backgroundColor;
the_obj.oFc=the_obj.currentStyle.color;
the_obj.style.backgroundColor='#4073C4';
the_obj.style.color='#ffffff';
the_obj.style.textDecoration='underline';
}
}
function outIt(){
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "td"){
the_obj=the_obj.parentElement;
the_obj.style.backgroundColor=the_obj.oBgc;
the_obj.style.color=the_obj.oFc;
the_obj.style.textDecoration='';
}
}
function serch(){
document.getElementById("formName").action="%=basePath %hgltj.action?method=getHglpm";
document.getElementById("formName").submit();
}
function tbbt(){
var jzrq=document.getElementById("jzrqId").value;
//var jxmc=document.getElementById("jxmcId").value;
window.open('%=basePath %hgltj.action?method=getHglpmTbtjjxkshgl.jzrq='+jzrq+'tjjxkshgl.zt='+1,'','height=650,width=1250,top=150,left=200,toobar=no,menubar=no,scrollbars=yes,resizable=no,location=no,');
}
function openwd(){
document.getElementById("formName").action="%=basePath %hgltj.action?method=downJxhglPm";
document.getElementById("formName").submit();
}
/script
/head
BODY onLoad="load()" style="background: url(images/cont_bg.gif); background-repeat: repeat-y"
input type="hidden" name="method" value="getDriverInfoList"/
table border="0" width="100%" cellspacing="0" cellpadding="0" id="maintb"
tr
td align="center"
table width="90%" border="0" cellspacing="0" cellpadding="0" id="mainbox" style="background:url(jsp/commonstyle/images/usermessage_02.gif); background-repeat:repeat-x;"
!--宽度可变内容框--
tr
td width="33" height="27" style=" background:url(jsp/commonstyle/images/usermessage_01.gif); background-position:left; background-repeat:no-repeat;" /td
td width="965" class="style1"font color="black"驾校合格率排名/font/td
td width="14" height="27" style=" background:url(jsp/commonstyle/images/usermessage_03.gif); background-position:right; background-repeat:no-repeat;" /td
/tr
tr
td colspan="3"
!--页面主体内容开始--
!--查询条件--
form action="" name="formName" method="post" style="margin:0px" id="formName" theme="simple"
table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;" id="tj" align="center"
tr align="left"
td class="tjbg1" style="text-align: left"
!-- input type="hidden" id="method" name="method" value="getHglpm"/ --
统计日期:
input type="text" name="tjjxkshgl.jzrq" id="jzrqId" value="s:property value="tjjxkshgl.jzrq"/" onclick="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM'})"/
!-- 驾校名称:
s:select id="jxmcId" name="tjjxkshgl.jxxh" value="tjjxkshgl.jxxh" list="schoolList" listKey="jxxh" listValue="jxmc" headerKey="" headerValue="--请选择--" theme="simple"/s:select --
input name="input" value=" 统 计 " type="button" class="normalbtn" onClick="serch()" style="margin-bottom: 5px" /
input name="input" type="button" value=" 合格率图表 " onclick="tbbt()" class="normalbtn" style="margin-bottom: 5px" /
input id="Button1" type="button" value=" 导 出 " onclick="openwd();" class="normalbtn" style="margin-bottom: 5px" /
/td
/tr
/table!--查询结果--
/form
!--查询结果--
table width="100%" border="0" cellpadding="4" cellspacing="1" bgcolor="#abcfff" id="cxjg" align="center"
thead
tr class="tbtitle"
td width="4%" align="center" class="t1"名次/td
td width="8%" align="center" class="t1"名称/td
td class="t1" width="5%" align="center"科目一/td
td class="t1" width="5%" align="center"科目二/td
td class="t1" width="5%" align="center"科目三/td
td class="t1" width="5%" align="center"平均合格率/td
td class="t1" width="5%" align="center"操作/td
/tr
/thead
s:iterator id="jxhgl" value="jxhelpmList" status="st"
tr class="changeColor" onMouseOver="overIt()" onMouseOut="outIt()" style="cursor: hand" align="center"
tds:property value="#st.index+1"//td
tds:property value="#jxhgl.jxmc"//td
tds:property value="#jxhgl.km1hgl"//td
tds:property value="#jxhgl.km2hgl"//td
tds:property value="#jxhgl.km3hgl"//td
tds:property value="#jxhgl.avghgl"/%/td
td
a href="javascript:" onclick="openWin('%=basePath %hgltj.action?method=getTbForJxxhtjjxkshgl.jxxh=s:property value="#jxhgl.jxxh"/tjjxkshgl.zt=1','',1250,750);"图表/a
/td
/tr
/s:iterator
/table
/table
/td
/tr
/table
/body
/html
2)java代码演示:
[java] view plaincopyprint?
/**
* 驾校合格率导出excel图表
*/
//response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
String tmptitle = "驾校合格率排名"; // 标题
response.setHeader("Content-disposition", "attachment; filename="+new String(tmptitle.getBytes(),"iso8859-1")+".xls");// 设定输出文件头
response.setContentType("application/vnd.ms-excel");// 定义输出类型
wbook = Workbook.createWorkbook(os); // 建立excel文件
WritableSheet wsheet = wbook.createSheet(tmptitle, 0); // sheet名称
// 设置excel标题
//cellFormat.setBackground(Colour.AQUA);
cellFormat.setFont(wfont);
label.setCellFormat(cellFormat);
wsheet.addCell(label);
//wsheet.addCell(new Label(0, 0, tmptitle, wcfFC));
wsheet.setRowView(0,500); //第一行高度
wsheet.mergeCells(0, 0, 6, 1); //合并单元格(第一列的第一行和第七列的第二行合并)
//wsheet.mergeCells(0, 1, 9, 1);
// wsheet.mergeCells(0, 2, 0, 4);
// wsheet.mergeCells(1, 2, 3, 2);
// wsheet.mergeCells(4, 2, 6, 2);
// wsheet.mergeCells(7, 2, 9, 2);
wsheet.setColumnView(0,10); //宽度
wsheet.setColumnView(1,25); //宽度
wsheet.setColumnView(2,10); //宽度
wsheet.setColumnView(3,10); //宽度
wsheet.setColumnView(4,10); //宽度
wsheet.setColumnView(5,10); //宽度
// 开始生成主体内容
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD,false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
wcfFC = new WritableCellFormat(wfont);
wsheet.addCell(new Label(0, 2, "名次",wcfFC));
wsheet.addCell(new Label(1, 2, "驾校名称",wcfFC));
wsheet.addCell(new Label(2, 2, "科目一",wcfFC));
wsheet.addCell(new Label(3, 2, "科目二",wcfFC));
wsheet.addCell(new Label(4, 2, "科目三",wcfFC));
wsheet.addCell(new Label(5, 2, "合格率",wcfFC));
int count=jxhelpmList.size();
if(count0){ ////判断集合是否不为0
TjJxkshgl tjhgl=null;
for(int i=0;ijxhelpmList.size();i++){
tjhgl=(TjJxkshgl)jxhelpmList.get(i);
wsheet.addCell(new Label(0, i+3, (i+1)+""));
wsheet.addCell(new Label(1, i+3, tjhgl.getJxmc()));
wsheet.addCell(new Label(2, i+3, tjhgl.getKm1hgl()));
wsheet.addCell(new Label(3, i+3, tjhgl.getKm2hgl()));
wsheet.addCell(new Label(4, i+3, tjhgl.getKm3hgl()));
wsheet.addCell(new Label(5, i+3, tjhgl.getAvghgl()));
}
Q5: 我想用java编写windows记事本的新建功能怎么写?要有代码演示。
这是一个我以前写的简单的记事本,里面有新建,保存,另存,打开等功能,但是只是逻辑最简单的那种,你看看吧,希望对你有帮助;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class NotePad {
public static void main(String[] args) {
NotePadFrame notPadFrame = new NotePadFrame();
notPadFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
notPadFrame.setVisible(true);
}
}
class NotePadFrame extends JFrame {
private JMenu jmb, jmb1;
private JMenuBar Jmenu = new JMenuBar();
private JMenuItem fm, fm1, fm2, fm3, fm4, fe1, fe2, fe3, fe4;
String fileName, copy, paste, cut;
NotePadPanel notePadPanel = new NotePadPanel(this);
private NotePadFrame f;
public NotePadFrame() {
jmb = new JMenu("文件");
this.setJMenuBar(Jmenu);
fm = new JMenuItem("新建");
jmb.add(fm);
jmb.addSeparator();
// 新建
fm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == fm) {
if (!(notePadPanel.getTa().getText()).equals("")) {
Object[] options = { "确定", "取消" };
int response = JOptionPane.showOptionDialog(null,
"你是否保存", "提示", JOptionPane.YES_OPTION,
JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (response == 0) {
FileDialog d = new FileDialog(f, "保存文件",
FileDialog.SAVE);
d.setVisible(true);
fileName = d.getDirectory() + d.getFile();
FileOutputStream fout = new FileOutputStream(
fileName + ".txt");
byte[] bb = notePadPanel.getTa().getText()
.getBytes();
fout.write(bb);
// 关闭
fout.close();
JOptionPane.showMessageDialog(null, "已保存");
notePadPanel.getTa().setText("");
}
if (response == 1) {
JOptionPane.showMessageDialog(null, "你选择了取消");
notePadPanel.getTa().setText("");
}
}
}
} catch (Exception e2) {
System.out.println(e2.getMessage());
}
}
});
fm1 = new JMenuItem("打开");
jmb.add(fm1);
jmb.addSeparator();
// 打开文件
fm1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == fm1) {
FileDialog d = new FileDialog(f, "打开文件",
FileDialog.LOAD);
d.setVisible(true);
File file = new File(d.getDirectory() + d.getFile());
for (int i = 0; i = file.length(); i++) {
char[] ch = new char[1024];
FileReader fr = new FileReader(file);
fr.read(ch);
String str = new String(ch);
notePadPanel.getTa().setText(str);
}
}
} catch (IOException e3) {
System.out.println(e3.getMessage());
}
}
});
fm2 = new JMenuItem("保存");
jmb.add(fm2);
jmb.addSeparator();
// 保存文件
fm2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == fm2) {
if (fileName == null) {
fileName = JOptionPane.showInputDialog("请输入文件名",
"java");
FileOutputStream fout = new FileOutputStream(
fileName + ".txt");
byte[] bb = notePadPanel.getTa().getText()
.getBytes();
fout.write(bb);
// 关闭
fout.close();
JOptionPane.showMessageDialog(null, "已保存");
} else {
FileOutputStream fout = new FileOutputStream(
fileName + ".txt");
byte[] bb = notePadPanel.getTa().getText()
.getBytes();
fout.write(bb);
// 关闭
fout.close();
JOptionPane.showMessageDialog(null, "已保存");
}
}
} catch (IOException e1) {
System.out.println(e1.getMessage());
}
}
});
fm3 = new JMenuItem("另存为");
jmb.add(fm3);
jmb.addSeparator();
// 另存为
fm3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == fm3) {
try {
FileDialog d = new FileDialog(f, "另存为", FileDialog.SAVE);
d.setVisible(true);
fileName = d.getDirectory() + d.getFile();
FileOutputStream fout = new FileOutputStream(fileName + ".txt");
byte[] bb = notePadPanel.getTa().getText().getBytes();
fout.write(bb);
// 关闭
fout.close();
} catch (Exception e4) {
System.out.println(e4.getMessage());
}
}
}
});
fm4 = new JMenuItem("关闭");
jmb.add(fm4);
fm4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == fm4) {
System.exit(0);
}
}
});
jmb1 = new JMenu("编辑");
fe1 = new JMenuItem("复制");
jmb1.add(fe1);
jmb1.addSeparator();
fe1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == fe1) {
copy = notePadPanel.getTa().getSelectedText();
}
}
});
fe2 = new JMenuItem("粘贴");
jmb1.add(fe2);
jmb1.addSeparator();
fe2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == fe2) {
System.out.println("copy="+copy);
notePadPanel.getTa().setText(copy);
}
}
});
fe3 = new JMenuItem("剪切");
jmb1.add(fe3);
jmb1.addSeparator();
fe3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == fe3) {
copy = notePadPanel.getTa().getSelectedText();
notePadPanel.getTa().setText("");
}
}
});
fe4 = new JMenuItem("版本");
jmb1.add(fe4);
fe4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==fe4){
JOptionPane.showMessageDialog(f, "NotePad 1.0");
}
}
});
Jmenu.add(jmb);
Jmenu.add(jmb1);
}
}
class NotePadPanel extends JPanel {
private JButton jb1, jb;
private JTextArea ta;
String fileName;
private JScrollPane jsp;
public JTextArea getTa() {
return ta;
}
public void setTa(JTextArea ta) {
this.ta = ta;
}
public NotePadPanel(NotePadFrame notePadFrame) {
ta = new JTextArea();
ta.setWrapStyleWord(true);
jsp = new JScrollPane(ta);
jb = new JButton("保存");
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == jb) {
if (fileName == null) {
fileName = JOptionPane.showInputDialog("请输入文件名",
"java");
FileOutputStream fout = new FileOutputStream(
fileName + ".txt");
byte[] bb = ta.getText().getBytes();
fout.write(bb);
// 关闭
fout.close();
JOptionPane.showMessageDialog(null, "已保存");
} else {
FileOutputStream fout = new FileOutputStream(
fileName + ".txt");
byte[] bb = ta.getText().getBytes();
fout.write(bb);
// 关闭
fout.close();
JOptionPane.showMessageDialog(null, "已保存");
}
}
} catch (IOException e1) {
System.out.println(e1.getMessage());
}
}
});
jb1 = new JButton("关闭");
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb1) {
System.exit(0);
}
}
});
this.add(jb);
this.add(jb1);
notePadFrame.add(this, "South");
notePadFrame.setSize(600, 400);
notePadFrame.add(jsp);
notePadFrame.setTitle("记事本");
int W = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int H = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
notePadFrame.setLocation((W - notePadFrame.getWidth()) / 2,
(H - notePadFrame.getHeight()) / 2);
}
}
关于java代码演示和java 代码简洁的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






