//在NotepadListener找不到变量ta怎么弄让他找到
//写个记事本,先弄个用户界面,再写监听import java.awt.*;
import java.awt.event.*;public class Notepad extends Frame{ MenuBar mb=new MenuBar();
TextArea ta=new TextArea();

Menu m1=new Menu("文件");
Menu m2=new Menu("编辑");
Menu m3=new Menu("格式");
Menu m4=new Menu("查看");
Menu m5=new Menu("帮助"); MenuItem mi11=new MenuItem("新建");
MenuItem mi12=new MenuItem("打开");
MenuItem mi13=new MenuItem("保存");
MenuItem mi14=new MenuItem("另存为"); MenuItem mi21=new MenuItem("全选");
MenuItem mi22=new MenuItem("复制");
MenuItem mi23=new MenuItem("粘帖"); MenuItem mi31=new MenuItem("自动换行");
MenuItem mi32=new MenuItem("字体");
MenuItem mi33=new MenuItem("背景色"); //MenuItem mi41=new MenuItem("");
//MenuItem mi42=new MenuItem("");
//MenuItem mi43=new MenuItem(""); MenuItem mi51=new MenuItem("帮助主题");
MenuItem mi52=new MenuItem("关于记事本");
//MenuItem mi53=new MenuItem(""); public Notepad(){
this.setMenuBar(mb);
this.add(ta);
mb.add(m1);
mb.add(m2);
mb.add(m3);
mb.add(m4);
mb.add(m5);

m1.add(mi11);
m1.add(mi12);
m1.add(mi13);
m1.add(mi14);

m2.add(mi21);
m2.add(mi22);
m2.add(mi23); m3.add(mi31);
m3.add(mi32);
m3.add(mi33); m5.add(mi51);
m5.add(mi52);

this.addListeners();

}

public static void main(String[] args){

Notepad nt=new Notepad();
nt.setTitle("雪天使");
nt.setSize(500,500);
nt.setVisible(true);
} void addListeners(){
NotepadListener nl=new NotepadListener(); this.addWindowListener(nl); mi11.addActionListener(nl);
mi12.addActionListener(nl);
mi13.addActionListener(nl);
mi14.addActionListener(nl); mi21.addActionListener(nl);
mi22.addActionListener(nl);
mi23.addActionListener(nl); mi31.addActionListener(nl);
mi32.addActionListener(nl);
mi33.addActionListener(nl); mi51.addActionListener(nl);
mi52.addActionListener(nl);
}
}
//监听class
class NotepadListener implements ActionListener,WindowListener{
public void actionPerformed(ActionEvent e){
String select=e.getActionCommand();
if(select=="新建"){
ta.setText("");//就这个,运行是说找不到变量ta
}else if(select=="打开"){ }else if(select=="保存"){ }else if(select=="另存为"){ }else if(select=="全选"){ }else if(select=="复制"){ }else if(select=="粘帖"){ }else if(select=="自动换行"){ }else if(select=="字体"){ }else if(select=="背景色"){
//setBackground(blue);
}else if(select=="帮助主题"){ }else if(select=="关于记事本"){

}else{ }

} public void windowActivated(WindowEvent e) {

}
public void windowClosed(WindowEvent e){

}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void windowDeactivated(WindowEvent e){

}
public void windowDeiconified(WindowEvent e){

}
public void windowIconified(WindowEvent e) {

}
public void windowOpened(WindowEvent e) { }}

解决方案 »

  1.   


    import java.awt.*;
    import java.awt.event.*; @SuppressWarnings("serial")
    public class Notepad extends Frame{ MenuBar mb=new MenuBar();
    TextArea ta=new TextArea(); Menu m1=new Menu("文件");
    Menu m2=new Menu("编辑");
    Menu m3=new Menu("格式");
    Menu m4=new Menu("查看");
    Menu m5=new Menu("帮助"); MenuItem mi11=new MenuItem("新建");
    MenuItem mi12=new MenuItem("打开");
    MenuItem mi13=new MenuItem("保存");
    MenuItem mi14=new MenuItem("另存为"); MenuItem mi21=new MenuItem("全选");
    MenuItem mi22=new MenuItem("复制");
    MenuItem mi23=new MenuItem("粘帖"); MenuItem mi31=new MenuItem("自动换行");
    MenuItem mi32=new MenuItem("字体");
    MenuItem mi33=new MenuItem("背景色");// MenuItem mi41=new MenuItem("");
    // MenuItem mi42=new MenuItem("");
    // MenuItem mi43=new MenuItem(""); MenuItem mi51=new MenuItem("帮助主题");
    MenuItem mi52=new MenuItem("关于记事本");
    // MenuItem mi53=new MenuItem(""); public Notepad(){
    this.setMenuBar(mb);
    this.add(ta);
    mb.add(m1);
    mb.add(m2);
    mb.add(m3);
    mb.add(m4);
    mb.add(m5); m1.add(mi11);
    m1.add(mi12);
    m1.add(mi13);
    m1.add(mi14); m2.add(mi21);
    m2.add(mi22);
    m2.add(mi23); m3.add(mi31);
    m3.add(mi32);
    m3.add(mi33); m5.add(mi51);
    m5.add(mi52); this.addListeners(); } public static void main(String[] args){ Notepad nt=new Notepad();
    nt.setTitle("雪天使");
    nt.setSize(500,500);
    nt.setVisible(true);
    } void addListeners(){
    NotepadListener nl=new NotepadListener(); this.addWindowListener(nl); mi11.addActionListener(nl);
    mi12.addActionListener(nl);
    mi13.addActionListener(nl);
    mi14.addActionListener(nl); mi21.addActionListener(nl);
    mi22.addActionListener(nl);
    mi23.addActionListener(nl); mi31.addActionListener(nl);
    mi32.addActionListener(nl);
    mi33.addActionListener(nl); mi51.addActionListener(nl);
    mi52.addActionListener(nl);
    }
    class NotepadListener implements ActionListener,WindowListener{
    public void actionPerformed(ActionEvent e){
    String select=e.getActionCommand();
    if(select=="新建"){
    ta.setText("");// 就这个,运行是说找不到变量ta
    }else if(select=="打开"){ }else if(select=="保存"){ }else if(select=="另存为"){ }else if(select=="全选"){ }else if(select=="复制"){ }else if(select=="粘帖"){ }else if(select=="自动换行"){ }else if(select=="字体"){ }else if(select=="背景色"){
    //  setBackground(blue);
    }else if(select=="帮助主题"){ }else if(select=="关于记事本"){ }else{ } } public void windowActivated(WindowEvent e) { }
    public void windowClosed(WindowEvent e){ }
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    public void windowDeactivated(WindowEvent e){ }
    public void windowDeiconified(WindowEvent e){ }
    public void windowIconified(WindowEvent e) { }
    public void windowOpened(WindowEvent e) { } }
    }

    写成内部类就好了..外部的话/ 不是一个类看不到哦..好了..可以给分了/哈哈//
      

  2.   

    可以写成内部类
    但是这样会显得有些乱
    可以传参数进去,比如
     
    public class Notepad extends Frame 这个类里面加一个方法:
    void setTextString(String str)
    {
        ta.setText("");
    }class NotepadListener implements ActionListener,WindowListener{
    这个类多一个构造方法NotepadListener(Notepad frame)
    当然,这样这个类就多了个字段了,这样你应该会操作了吧