//继承的类换一下,应该用swing包里面
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站设计、元江县网络推广、微信小程序开发、元江县网络营销、元江县企业策划、元江县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供元江县建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
class Jsben extends Frame { -- class Jsben extends JFrame {
frame的方法setMenuBar(bar);和setJMenuBar(bar);这个不太一样,功能类似
1、先下载安装java sdk 1.6或1.6以上最新版本,并安装。 2、用记事本编辑java源码如:public class Test{public static void main(String argv []){System.out.println("Hello Java!");}}
保存为"所有文件",Test.java,主文件名与public class Test保持一致。 3、运行javac Test.java,进行编译,得到Test.class 4、用java命令解析运行 java Test ,注意,此处不用加上扩展名.class 5、从方便和提高效率来说,即使是专业程序员,对于大一点的程序,用记事本来编辑都没有用eclipse或netbeans这样的IDE方便。 6、如要进行Java EE或Java ME,或android开发,则必须要用IDE,除非是只做少量修改。 即使是喜欢用Linux的用户,他们也会用功能强大得多的vi
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;
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.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileFilter;
public class Demo extends JFrame {
private static final long serialVersionUID = 1L; //Eclipse自动生成序列号
String name = "无标题";
JPanel menuPanel = new JPanel();
JTextArea text = new TextAreaMenu(); //文本编辑区
JScrollPane jsp = new JScrollPane(text); //可滚动编辑区
JMenuBar mnbMain = new JMenuBar();
JMenu mnServer = new JMenu("文件(F)");
JMenu mnEdit = new JMenu("编辑(E)");
JMenuItem[] mniServers = new JMenuItem[]{
new JMenuItem("新建(N)"),
new JMenuItem("保存(S)"),
new JMenuItem("打开(O)"),
new JMenuItem("退出(X)"),
};
{
menuPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
mnbMain.add(mnServer);
menuPanel.add(mnbMain);
mnbMain.setBounds(5, 0, 50, 30);
for (int i = 0; i mniServers.length; i++) {
mnServer.add(mniServers[i]);
}
mniServers[0].addActionListener(new ActionListener() { //定义"新建"组件操作
@Override
public void actionPerformed(ActionEvent arg0) {
new Demo(getLocation().x+15,getLocation().y+5);
}
});
mniServers[1].addActionListener(new ActionListener() { //定义"保存"组件操作
@Override
public void actionPerformed(ActionEvent arg0) {
chooseToSave();
}
});
mniServers[2].addActionListener(new ActionListener() { //定义"打开"组件操作
@Override
public void actionPerformed(ActionEvent arg0) {
chooseToOpen();
}
});
mniServers[3].addActionListener(new ActionListener() { //定义"退出"组件操作
@Override
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
text.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusGained(FocusEvent e) {
}
});
}
public Demo(int x,int y) {
this.setTitle( name +" - 记事本");
this.setBounds(x, y, 600, 400);
this.setLayout(new BorderLayout());
this.add(menuPanel, BorderLayout.NORTH);
this.add(jsp);
jsp.setBounds(5, 30, getWidth()-10, getHeight()-50);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setVisible(true);
}
public Demo() {
this(200,200);
}
protected void chooseToSave() {
File file = chooseFile();
if(null==file)return;
if(file.exists()){
int cho = JOptionPane.showConfirmDialog(this, "文件已存在,是否覆盖?");
System.out.println(cho);
if(cho==JOptionPane.OK_OPTION)save(file);
else return;
}
else save(file);
}
private void save(File file) {
name = file.getName();
write(text.getText(),file.getPath());
this.setTitle( name +" - 记事本");
}
protected void chooseToOpen() {
File file = chooseFile();
if(null==file||!file.exists())return;
name = file.getName();
Demo.this.setTitle( name +" - 记事本");
read(text,file);
}
/*********************************************MAIN**************************************************/
public static void main(String[] args) {
new Demo();
}
private File chooseFile(){
JFileChooser chooser = new JFileChooser(); //构建文件选择器
chooser.setFileFilter(new FileFilter() {
@Override
public String getDescription() {
return "文本文件";
}
@Override
public boolean accept(File f) {
String name = f.getName().toLowerCase();
return f.isDirectory() || name.endsWith(".txt")
||name.endsWith(".c") || name.endsWith(".java")
||name.endsWith(".cpp"); //可识别文件
}
});
int result = chooser.showDialog(null, "确定");
if (result==JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
System.out.println(file.getAbsolutePath());
} else {
System.out.println("未选择文件");
}
return chooser.getSelectedFile();
}
public static void read(JTextArea text,File file){ //定义读取文件操作
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String string = null;
while((string = br.readLine()) != null){
text.append(string+"\n");
}
br.close();
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void write(String txt,String fileName){
FileWriter fw;
try {
fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(txt);
bw.flush();
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class TextAreaMenu extends JTextArea implements MouseListener {
private static final long serialVersionUID = -2308615404205560110L;
private JPopupMenu pop = null; // 弹出菜单
private JMenuItem selectAll = null,copy = null, paste = null, cut = null, cancel=null; // 功能菜单
public TextAreaMenu() {
super();
init();
}
private void init() {
this.addMouseListener(this);
this.setSelectedTextColor(Color.red);
pop = new JPopupMenu();
pop.add(selectAll = new JMenuItem("全选"));
pop.add(copy = new JMenuItem("复制"));
pop.add(paste = new JMenuItem("粘贴"));
pop.add(cut = new JMenuItem("剪切"));
pop.add(cancel = new JMenuItem("撤销"));
selectAll.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_MASK));
copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));
cancel.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.CTRL_MASK));
copy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action(e);
}
});
paste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action(e);
}
});
cut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action(e);
}
});
this.add(pop);
}
/**
* 菜单动作
* @param e
*/
public void action(ActionEvent e) {
String str = e.getActionCommand();
if (str.equals(selectAll.getText())) { // 全选
this.selectAll();
}
else if (str.equals(copy.getText())) { // 复制
this.copy();
} else if (str.equals(paste.getText())) { // 粘贴
this.paste();
} else if (str.equals(cut.getText())) { // 剪切
this.cut();
}
else if (str.equals(cancel.getText())) { //撤销
this.cut();
}
}
public JPopupMenu getPop() {
return pop;
}
public void setPop(JPopupMenu pop) {
this.pop = pop;
}
/**
* 剪切板中是否有文本数据可供粘贴
*
* @return true为有文本数据
*/
public boolean isClipboardString() {
boolean b = false;
Clipboard clipboard = this.getToolkit().getSystemClipboard();
Transferable content = clipboard.getContents(this);
try {
if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {
b = true;
}
} catch (Exception e) {
}
return b;
}
/**
* 文本组件中是否具备复制的条件
*
* @return true为具备
*/
public boolean isCanCopy() {
boolean b = false;
int start = this.getSelectionStart();
int end = this.getSelectionEnd();
if (start != end)
b = true;
return b;
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
copy.setEnabled(isCanCopy());
paste.setEnabled(isClipboardString());
cut.setEnabled(isCanCopy());
pop.show(this, e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
}
}
很简单的啊,在记事本里写上相应的java代码,写好保存后将相应的文件名后缀改为****.java,然后用CMD去编译一下就可以了。
具体流程是这样的:
然后就可以去CMD那里编译和运行了。
在华信智原的JAVA课堂里面第一节课就会讲到这个基础的知识。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.datatransfer.*;
import java.util.*;
public class NotePad//本实验仅实现:文件(暂时模拟)打开,新建,保存,另存为,转到
{ //具体实现:剪切,复制,粘贴,删除,全选,打印,退出,页面设置,日期时间
//其他待实现
public static void main(String args[])
{
MyWindow my=new MyWindow("我的记事本");
}
}
class MyWindow extends Frame implements ActionListener
{
MyDialog dia1;
FileDialog saver,opener,save_as;
Clipboard clipboard;
MenuBar bar;
Menu menu1,menu2,menu3,menu4,menu5;
MenuItem newmake,open,save,saveas,pageset,print,exit;
MenuItem che,cut,copy,paste,del,search,s_next,replace,trans,save_all,data_time;
MenuItem letter;
MenuItem statusbar;
MenuItem help1,help2;
TextArea tex;
PrintJob p=null;
Graphics g=null;
CheckboxMenuItem auto_newline;
MyWindow(String s)
{
super(s);
dia1=new MyDialog(this,"转到下列行",true);
clipboard=getToolkit().getSystemClipboard();
saver=new FileDialog(this,"保存文件",FileDialog.SAVE);
//saver.setLocation(100,60);
opener=new FileDialog(this,"打开文件",FileDialog.LOAD);
save_as=new FileDialog(this,"另存为",FileDialog.LOAD);
bar=new MenuBar();
Menu menu1=new Menu("文件(F)");
Menu menu2=new Menu("编辑(E)");
Menu menu3=new Menu("格式(O)");
Menu menu4=new Menu("查看(V)");
Menu menu5=new Menu("帮助(H)");
newmake=new MenuItem("新建(N)");
newmake.addActionListener(this);
newmake.setShortcut(new MenuShortcut(KeyEvent.VK_N));
open=new MenuItem("打开(O)");
open.addActionListener(this);
open.setShortcut(new MenuShortcut(KeyEvent.VK_O));
save=new MenuItem("保存(S)");
save.addActionListener(this);
save.setShortcut(new MenuShortcut(KeyEvent.VK_S));
saveas=new MenuItem("另存为(A)");
saveas.addActionListener(this);
pageset=new MenuItem("页面设置(U)...");
pageset.addActionListener(this);
print=new MenuItem("打印(P)...");
print.addActionListener(this);
print.setShortcut(new MenuShortcut(KeyEvent.VK_P));
exit=new MenuItem("退出(X)");
exit.addActionListener(this);
menu1.add(newmake);
menu1.add(open);
menu1.add(save);
menu1.add(saveas);
menu1.addSeparator();
menu1.add(pageset);
menu1.add(print);
menu1.addSeparator();
menu1.add(exit);
che=new MenuItem("撤销(U)");
che.setShortcut(new MenuShortcut(KeyEvent.VK_Z));
cut=new MenuItem("剪切(T)");
cut.addActionListener(this);
cut.setShortcut(new MenuShortcut(KeyEvent.VK_X));
copy=new MenuItem("复制(C)");
copy.addActionListener(this);
copy.setShortcut(new MenuShortcut(KeyEvent.VK_C));
paste=new MenuItem("粘贴(P)");
paste.addActionListener(this);
paste.setShortcut(new MenuShortcut(KeyEvent.VK_V));
del=new MenuItem("删除(L)");
del.addActionListener(this);
del.setShortcut(new MenuShortcut(KeyEvent.VK_D));
search=new MenuItem("查找(F)...");
search.setShortcut(new MenuShortcut(KeyEvent.VK_F));
s_next=new MenuItem("查找下一个(N)");
s_next.setShortcut(new MenuShortcut(KeyEvent.VK_F3));
replace=new MenuItem("替换(R)...");
replace.setShortcut(new MenuShortcut(KeyEvent.VK_H));
trans=new MenuItem("转到(G)...");
trans.setShortcut(new MenuShortcut(KeyEvent.VK_G));
trans.addActionListener(this);
save_all=new MenuItem("全选(A)");
save_all.setShortcut(new MenuShortcut(KeyEvent.VK_A));
save_all.addActionListener(this);
data_time=new MenuItem("日期/时间(D)");
data_time.setShortcut(new MenuShortcut(KeyEvent.VK_F5));
data_time.addActionListener(this);
menu2.add(che);
menu2.addSeparator();
menu2.add(cut);
menu2.add(copy);
menu2.add(paste);
menu2.add(del);
menu2.addSeparator();
menu2.add(search);
menu2.add(s_next);
menu2.add(replace);
menu2.add(trans);
menu2.addSeparator();
menu2.add(save_all);
menu2.add(data_time);
auto_newline=new CheckboxMenuItem("自动换行(W)");//尚未实现
auto_newline.addActionListener(this);
letter=new MenuItem("字体(F)...");//尚未实现
menu3.add(auto_newline);
menu3.add(letter);
statusbar=new MenuItem("状态栏(S)");
statusbar.setEnabled(false);
menu4.add(statusbar);
help1=new MenuItem("帮助主题(H)");
help2=new MenuItem("关于记事本(A)");
menu5.add(help1);
menu5.add(help2);
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
bar.add(menu4);
bar.add(menu5);
setMenuBar(bar);
tex=new TextArea();
add(tex,BorderLayout.CENTER);
setBounds(300,50,600,600);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==open)
{
opener.setVisible(true);
tex.setText("你打开的文件为:"+opener.getFile()+"\n文件所在目录为:"+opener.getDirectory());
}
if(e.getSource()==save)
{
saver.setVisible(true);
tex.setText("你保存文件为:"+saver.getFile()+"\n文件所在目录为:"+saver.getDirectory());
}
if(e.getSource()==saveas)
{
save_as.setVisible(true);
tex.setText("你另存的文件为:"+save_as.getFile()+"\n文件所在目录为:"+save_as.getDirectory());
}
if(e.getSource()==exit)
{
System.exit(0);
}
if(e.getSource()==newmake)
{
//if(tex.getText()!=null)这里不可以判断内容的有无,只能通过内容的长度,来判断是否输入了内容
if(tex.getText().length()!=0)
{
int k=JOptionPane.showConfirmDialog(this,"文件的文字已经改变,想保存文件吗?","确认对话框",JOptionPane.YES_NO_OPTION);
if(k==JOptionPane.YES_OPTION)
{
saver.setVisible(true);
tex.setText(null);
}
if(k==JOptionPane.NO_OPTION)
{
tex.setText(null);
}
}
else
{
tex.setText("你已经新建一个文件");
}
}
if(e.getSource()==print)
{
p=getToolkit().getPrintJob(this,"ok",null);
g=p.getGraphics();
g.translate(120,200);
tex.printAll(g);
g.dispose();
p.end();
}
if(e.getSource()==trans)//未实现
{
dia1.setVisible(true);
//dia1.setCaretPosition();
}
if(e.getSource()==save_all)
{
tex.selectAll();//全选
}
if(e.getSource()==data_time)
{
Date d=new Date();
tex.append(d.toString());
}
if(e.getSource()==pageset)
{
p=getToolkit().getPrintJob(this,"ok",null);
g=p.getGraphics();
g.translate(120,200);
tex.printAll(g);
g.dispose();
p.end();
}
if(e.getSource()==copy)
{
String temp=tex.getSelectedText();
StringSelection text=new StringSelection(temp);
clipboard.setContents(text,null);
}
else if(e.getSource()==cut)
{
String temp=tex.getSelectedText();
StringSelection text=new StringSelection(temp);
clipboard.setContents(text,null);
int start=tex.getSelectionStart();
int end=tex.getSelectionEnd();
tex.replaceRange("",start,end);
}
else if(e.getSource()==paste)
{
Transferable contents=clipboard.getContents(this);
DataFlavor flavor=DataFlavor.stringFlavor;
if(contents.isDataFlavorSupported(flavor))
{
try{
String str=(String)contents.getTransferData(flavor);
tex.append(str);
}
catch(Exception ee){}
}
}
if(e.getSource()==del)
{
int start=tex.getSelectionStart();
int end=tex.getSelectionEnd();
tex.replaceRange("",start,end);
}
//if(e.getSource()==auto_newline)
//{
//System.out.println("自动换行");
//}
}
}
class MyDialog extends Dialog implements ActionListener
{
TextField t1;
Button but1,but2;
MyDialog(Frame f,String s,boolean b)
{
super(f,s,b);
t1=new TextField(10);
but1=new Button("确定");
but2=new Button("取消");
setLayout(new FlowLayout());
add(t1);
add(but1);
add(but2);
but1.addActionListener(this);
but2.addActionListener(this);
setBounds(320,150,200,100);
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==but1||e.getSource()==but2)
{
setVisible(false);
}
}
}
1. 新建一个记事本,后缀名是 .java ;然后在里面写一段java的代码,如图:
2.把写好的java文件丢进D盘,就是第一步给出的那个class文件;
3. 打开dos界面 开始-〉运行-〉cmd-〉 这个是命令行模式,选择D盘,如图:
4.选择D盘之后,在命令提示符中输入“javac 文件名.java”,我的文件名为java,所以输入javac java.java然后回车,等待编译。这时候你就会发现它提示说javac不是内部文件。接下来就是java环境变量设置的问题了;
5.下载一个jdk执行默认安装。例如我下的jdk版本是: jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe;
6.配置环境:右击我的电脑点属性,进去点高级就能看到环境变量。点进去就能设置你的系统变量了,如图:
6-1。变量名:classpath 变量值:(.;C:\Program Files\Java\jdk1.6.0_10\lib;)括号里面都是 (主要我们在编译运行程序的时候通过classpath可以帮助我们找到一些需要的系统类,“.”号是表示当前路径;“;”号是用来隔开多个变量值,如果你的系统里面已经有classpath环 境变量,就不用新建了,直接加“;”号,在后面加新值);如图所示