首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JAVA菜鸟有关问题,那位大侠帮帮忙

2012-08-16 
JAVA初学者问题,那位大侠帮帮忙小弟是JAVA初学者,按着教科书上的例子写了个记事本程序(书上的原文例子),可

JAVA初学者问题,那位大侠帮帮忙
小弟是JAVA初学者,按着教科书上的例子写了个记事本程序(书上的原文例子),可是运行后功实现不了,那位大侠帮忙改进下,不盛感激。
我的程序是用的监听类分开监听模式。
MouseHandler.java

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

class MouseHandler extends MouseAdapter{
public void mouseReleased(MouseEvent e){
if (e.getButton()==MouseEvent.BUTTON3&&e.getSource()==txtContent){
popupMenu.show(txtContent,e.getX(),e.getY());
}
super.mouseReleased(e);
}
}

keyHandler.java
 
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

class keyHandler extends KeyAdapter{
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}

ConfirmHandler.java 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 java.io.PrintWriter;

import javax.swing.JFileChooser;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

class ConfirmHandler implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(!(e.getSource() instanceof JMenuItem))
return;

JMenuItem i = (JMenuItem)e.getSource();

if(i==newItem)
iNew();
else if (i==openItem)
iOpen();
else if (i==saveAsItem)
iSave();
else if (i==cutItem||i==cutPitem)
iCut();
else if (i==copyItem||i==copyPitem)
iCopy();
else if(i==pasteItem||i==pastePitem)
iPaste();
else if (i==aboutItem)
iAbout();

}

private void iAbout() {
// TODO Auto-generated method stub
String mes="";
JOptionPane.showMessageDialog(null, mes);
}

private void iPaste() {
// TODO Auto-generated method stub
txtContent.paste();
lblStatus.setText("已修改");
}

private void iCopy() {
// TODO Auto-generated method stub
txtContent.copy();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
}

private void iCut() {
// TODO Auto-generated method stub
txtContent.cut();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
lblStatus.setText("已修改");
}

private void iSave() {
// TODO Auto-generated method stub
JFileChooser chooser = new JFileChooser();
PrintWriter w = null;
File file = null;

if(lblStatus.getText().equals("已修改")){
int s =chooser.showSaveDialog(null);
if(s==JFileChooser.CANCEL_OPTION)
return;
file = chooser.getSelectedFile();
try{
w = new PrintWriter(new BufferedWriter(new FileWriter(file)));

String ss[]=txtContent.getText().split("\n");
for(String st:ss)
w.println(st);

}catch (FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
w.close();
}
}
lblStatus.setText("未修改");
}

private void iOpen() {
// TODO Auto-generated method stub
iNew();

JFileChooser chooser = new JFileChooser();
int s = chooser.showOpenDialog(null);
String str = "";

if(s==JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile();
BufferedReader r= null;
try{
r = new BufferedReader(new FileReader(file));
while(true){
str = r.readLine();


if(str==null)
break;
txtContent.append(str+"\n");
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{r.close();}
catch(IOException e){e.printStackTrace();}

}
Notepad.this.setTitle(file.getName());
}
}

private void iNew() {
// TODO Auto-generated method stub
if (lblStatus.getText().equals("已修改")){
int confirm = JOptionPane.showConfirmDialog(null, "文件已修改,要另存修改码?");
if (confirm==JOptionPane.OK_OPTION)
iSave();
else if(confirm==JOptionPane.CANCEL_OPTION)
return;
}
txtContent.setText("");
pasteItem.setEnabled(false);
pastePitem.setEnabled(false);
Notepad.this.setTitle("记事本");
lblStatus.setText("未修改");
}

}

Notepad.java 

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

class Notepad extends JFrame{
private JMenuBar mainBar;
private JPopupMenu popupMenu;
private JMenu file,edit,help;
private JMenuItem newItem,openItem,saveAsItem;
private JMenuItem cutItem,copyItem,pasteItem,cutPitem,copyPitem,pastePitem;
private JMenuItem aboutItem;
private JTextArea txtContent;
private JLabel lblStatus;

private ConfirmHandler cHandler = new ConfirmHandler();
private keyHandler kHandler=new keyHandler();
private MouseHandler Mhandler = new MouseHandler();

public Notepad(){
this("记事本");
}

public Notepad(String title){
super(title);
intMenu();
intGUI();

setSize(600,500);
setVisible(true);
setLocation(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private void intGUI() {
// TODO Auto-generated method stub
Container c = getContentPane();

txtContent = new JTextArea();
txtContent.setLineWrap(true);
txtContent.setWrapStyleWord(true);
txtContent.addKeyListener(kHandler);
txtContent.addMouseListener(Mhandler);

JScrollPane s= new JScrollPane(txtContent);
c.add(s,BorderLayout.CENTER);
lblStatus=new JLabel("未修改");
c.add(lblStatus,BorderLayout.SOUTH);

}

private void intMenu() {
// TODO Auto-generated method stub
mainBar = new JMenuBar();
setJMenuBar(mainBar);

file = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(cHandler);
openItem = new JMenuItem("打开");
openItem.addActionListener(cHandler);
saveAsItem = new JMenuItem("另存为");
saveAsItem.addActionListener(cHandler);
file.add(newItem);
file.add(openItem);
file.add(saveAsItem);

edit=new JMenu("编辑");
cutItem=new JMenuItem("剪切");
cutItem.addActionListener(cHandler);
copyItem = new JMenuItem("复制");
copyItem.addActionListener(cHandler);
pasteItem = new JMenuItem("粘帖");
pasteItem.addActionListener(cHandler);
edit.add(cutItem);
edit.add(copyItem);
edit.add(pasteItem);

popupMenu = new JPopupMenu();
cutPitem = new JMenuItem("剪切");
cutPitem.addActionListener(cHandler);
copyPitem = new JMenuItem("复制");
copyPitem.addActionListener(cHandler);
pastePitem = new JMenuItem("粘帖");
pastePitem.addActionListener(cHandler);


pastePitem.setEnabled(false);
pastePitem.addActionListener(cHandler);
popupMenu.add(cutPitem);
popupMenu.add(copyPitem);
popupMenu.add(pastePitem);

help = new JMenu("帮助");
aboutItem = new JMenuItem("关于 记事本");
aboutItem.addActionListener(cHandler);
help.add(aboutItem);

mainBar.add(file);
mainBar.add(edit);
mainBar.add(help);

}
}

MyNotepad.java 
public class MyNotepad {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Notepad();
}

}


[解决办法]
LZ的代码敲的有问题吧。keyHandler类中lblStatus没看到定义

class keyHandler extends KeyAdapter{
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}
[解决办法]

探讨

LZ的代码敲的有问题吧。keyHandler类中lblStatus没看到定义

class keyHandler extends KeyAdapter{
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}

热点排行