import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class NotePad extends JFrame implements ActionListener{
private JMenuItem fileNew = new JMenuItem("新建(N)     Ctrl+N");
private JMenuItem fileOpen = new JMenuItem("打开(O)     Ctrl+O");
private JMenuItem fileSave = new JMenuItem("保存(S)    Ctrl+S");
private JMenuItem fileSave_As = new JMenuItem("另存为(A)");
private JMenuItem filePage_Setup = new JMenuItem("页面设置(U)");
private JMenuItem filePrint = new JMenuItem("打印(P)    Ctrl+P");
private JMenuItem fileExit= new JMenuItem("退出(X)");
private JMenuItem editRevocation = new JMenuItem("撤销(U)     Ctrl+Z");
private JMenuItem editShear = new JMenuItem("剪切(T)     Ctrl+X");
private JMenuItem editCopy = new JMenuItem("复制(C)    Ctrl+C");
private JMenuItem editPaste = new JMenuItem("粘贴(P)    Ctrl+P");
private JMenuItem editDelete = new JMenuItem("删除(Del)     Del");
private JMenuItem editFind = new JMenuItem("查找(F)     Ctrl+F");
private JMenuItem editFind_Next = new JMenuItem("查找下一个(N)     F3");
private JMenuItem editReplacement = new JMenuItem("替换(R)    Ctrl+H");
private JMenuItem editGo = new JMenuItem("转到(G)     Ctrl+G");
private JMenuItem editSelet = new JMenuItem("全选(A)     Ctrl+A");
private JMenuItem editTime_Date = new JMenuItem("时间/日期(D)     F5");
private JMenuItem formatWrap = new JMenuItem("自动换行(W)");
private JMenuItem formatFonts = new JMenuItem("字体(F)");
private JMenuItem viewStatus_Bar = new JMenuItem("状态栏(S)");
private JMenuItem helpHelp_Topics = new JMenuItem("帮助主题(H)");
private JMenuItem helpAbout = new JMenuItem("关于记事本(A)");
private TextArea ta= new TextArea(10,20);
public NotePad(){
super("记事本");
JMenu file = new JMenu("文件(F)");
JMenu edit = new JMenu("编辑(E)");
JMenu format = new JMenu("格式(O)");
JMenu view = new JMenu("查看(V)");
JMenu help = new JMenu("帮助(H)");
file.add(fileNew);file.add(fileOpen);file.add(fileSave);file.add(fileSave_As);
file.add(filePage_Setup);file.add(filePrint);file.add(fileExit);
edit.add(editRevocation);edit.add(editShear);edit.add(editCopy);
edit.add(editPaste);edit.add(editDelete);edit.add(editFind);edit.add(editFind_Next);
edit.add(editReplacement);edit.add(editGo);edit.add(editSelet);edit.add(editTime_Date);
format.add(formatWrap);format.add(formatFonts);
view.add(viewStatus_Bar); 
help.add(helpHelp_Topics);help.add(helpAbout);
add(ta);
JMenuBar bar = new JMenuBar();
bar.add(file);
bar.add(edit);
bar.add(format);
bar.add(view);
bar.add(help);
setJMenuBar(bar);
fileExit.addActionListener(this);
fileOpen.addActionListener(this);
pack();
setSize(400,400); 
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void readFile(String file){
ta.setText("");
try{
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
while ((line = in.readLine())!= null)
ta.append(line + "\n");
in.close();
ta.setCaretPosition(0);
}catch(IOException ioe){
System.err.println(ioe);
}
}
public static void main(String[] args){
NotePad np = new NotePad();
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource() == fileExit)
System.exit(0);
else if(ae.getSource() == fileOpen){FileDialog fd = new FileDialog(this,"请选择要打开的文件",FileDialog.LOAD);
fd.setVisible(true);
if(fd.getFile() != null){
File file = new File(fd.getDirectory() + fd.getFile());
if(file.exists())
readFile(file.toString());
else
ta.setText("File name: " + file + " invalid.");
}
fd.dispose();
}}
}这个程序为什么菜单的下拉菜单打不开啊!
把add(ta);这句注释掉就能看到下拉菜单了,但是就没文本区域了
这在其它电脑上运行好想有用的,但到我自己电脑上就没用 了,这是怎么回事啊!
在JCreator中和在命令提示符中运行都会出现这问题啊!

解决方案 »

  1.   

    JtextArea那些最好先装到JPanel这个容器中再add(JPanel)进去
      

  2.   

    找了好久终于发现:
    不是用:private TextArea ta= new TextArea(10,20); 
    而要用:private JTextArea ta = new JTextArea(10, 20);
    呵呵......
      

  3.   

    看了看这个http://www.moon-soft.com/doc/42253.htm
    这东西好久都没弄了....
      

  4.   

    因为,TextArea是属于AWT控件,而其他属于swing控件,AWT控件显示优先级高,也就是说,不管实际是什么样的遮挡关系,AWT控件总是绘制在Swing控件上面,因此要用同级的,JTextArea控件,就好了
      

  5.   


    jdk/jre 版本一样吗?从6u12开始有限的支持混用AWT和Swing组件。