当前位置: 代码迷 >> Java相关 >> 菜单为什么不显示出来?
  详细解决方案

菜单为什么不显示出来?

热度:542   发布时间:2007-05-20 11:00:23.0
菜单为什么不显示出来?
package caidan;
import javax.swing.*;
import java.awt.*;
public class caidan {
static JFrame kuang=new JFrame("记事本");
static JTextArea wenben=new JTextArea();
static JMenuBar caidan=new JMenuBar();
static JMenu wenjian=new JMenu("文件");
static JMenu bianji=new JMenu("编辑");
static JMenu geshi=new JMenu("格式");
static JMenu chakan=new JMenu("查看");
caidan(){
String wen[]={"新建","打开","保存","另存为","退出"};
String bian[]={"撤消","剪切","复制","粘贴","删除"};
JMenuItem a[]=new JMenuItem[wen.length];
JMenuItem a1[]=new JMenuItem[bian.length];
for(int i=0;i<5;i++)
{
a[i]=new JMenuItem(wen[i]);
a1[i]=new JMenuItem(bian[i]);
wenjian.add(a[i]);
bianji.add(a1[i]);
}
caidan.add(wenjian);
caidan.add(bianji);
}
public static void main(String[]args)
{

kuang.setSize(600,600);
kuang.setLocation(300,300);
kuang.setBackground(Color.white);
kuang.add(wenben);
kuang.setJMenuBar(caidan);
kuang.setVisible(true);
}
}
我一开始是用AWT的。。现在要学SWING。用AWT那时好象这样就可以显示出来的?为什么现在不可以呢
搜索更多相关的解决方案: 菜单  

----------------解决方案--------------------------------------------------------
感觉你的代码写得有点怪怪的。

菜单的初始化以及添加你都放到caidan类的构造方法里了,而你在main方法里根本就没创建类的对象,也就是没调用构造方法,所以菜单显示不出来。
----------------解决方案--------------------------------------------------------
确实不符合正常标准.还是找个例子看看吧!
----------------解决方案--------------------------------------------------------

说点自己的看法
第一你的类名Caidan最好第一个字母大写,变量声明最好用英文好些,很多公司是这样要求的
不要创建一个JFrame类,你只需要将Caidan这个类声明为JFrame的子类
下面是我稍作改动的代码,你试下
import javax.swing.*;
import java.awt.*;
public class Caidan extends JFrame {
// static JFrame kuang=new JFrame("记事本");
static JTextArea wenben=new JTextArea();
static JMenuBar caidan=new JMenuBar();
static JMenu wenjian=new JMenu("文件");
static JMenu bianji=new JMenu("编辑");
static JMenu geshi=new JMenu("格式");
static JMenu chakan=new JMenu("查看");

Caidan(){
super("记事本");
String wen[]={"新建","打开","保存","另存为","退出"};
String bian[]={"撤消","剪切","复制","粘贴","删除"};
JMenuItem a[]=new JMenuItem[wen.length];
JMenuItem a1[]=new JMenuItem[bian.length];
for(int i=0;i<5;i++)
{
a[i]=new JMenuItem(wen[i]);
a1[i]=new JMenuItem(bian[i]);
wenjian.add(a[i]);
bianji.add(a1[i]);
}
setJMenuBar(caidan);
caidan.add(wenjian);
caidan.add(bianji);
setSize(600,600);
}

public static void main(String[]args)
{

/* kuang.setSize(600,600);
kuang.setLocation(300,300);
kuang.setBackground(Color.white);
kuang.add(wenben);
// kuang.setJMenuBar(caidan);
kuang.setVisible(true);*/
Caidan application =new Caidan();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.setVisible(true);
}
}


----------------解决方案--------------------------------------------------------
看起来挺蒙的  很乱的感觉
----------------解决方案--------------------------------------------------------
回复:(xuerong1220)说点自己的看法第一你的类名Cai...
package caidan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Caidan implements ActionListener{
static JFrame kuang=new JFrame("记事本");
static JTextArea wenben=new JTextArea();
static JMenuBar caidan=new JMenuBar();
static JMenu wenjian=new JMenu("文件");
static JMenu bianji=new JMenu("编辑");
static JMenu geshi=new JMenu("格式");
static JMenu chakan=new JMenu("查看");
String wen[]={"新建","打开","保存","另存为","退出"};
String bian[]={"撤消","剪切","复制","粘贴","删除"};
JMenuItem a[]=new JMenuItem[wen.length];
JMenuItem a1[]=new JMenuItem[bian.length];
public Caidan(){
for(int i=0;i<5;i++)
{
a[i]=new JMenuItem(wen[i]);
a1[i]=new JMenuItem(bian[i]);
wenjian.add(a[i]);
bianji.add(a1[i]);
a[i].addActionListener(this);
a1[i].addActionListener(this);
}
caidan.add(wenjian);
caidan.add(bianji);
caidan.add(geshi);
caidan.add(chakan);
}
public void actionPerformed(ActionEvent e)
{

if(e.getActionCommand().equals("新建"))
{
wenben.setText("");
}else if(e.getActionCommand().equals("打开"))
{
FileDialog fd=new FileDialog(kuang,"打开",FileDialog.LOAD);
fd.show();
String strFile=fd.getDirectory()+fd.getFile();
if(strFile!=null)
{
try {
FileReader fr=new FileReader(strFile);
BufferedReader fis=new BufferedReader(fr);
String line=fis.readLine();
while(line!=null)
{
wenben.append(line);
wenben.setLineWrap(true);
line=fis.readLine();
}
fis.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}else if(e.getActionCommand().equals("保存"))
{
FileDialog ff=new FileDialog(kuang,"打开",FileDialog.SAVE);
ff.show();
try{
FileWriter Fr=new FileWriter(ff.getDirectory()+ff.getFile());
BufferedWriter FF=new BufferedWriter(Fr);
FF.write(wenben.getText());
FF.close();
}catch(Exception ex){
ex.printStackTrace();
}
}else if(e.getActionCommand().equals("另存为"))
{
FileDialog ff=new FileDialog(kuang,"打开",FileDialog.SAVE);
ff.show();
try{
FileWriter Fr=new FileWriter(ff.getDirectory()+ff.getFile());
BufferedWriter FF=new BufferedWriter(Fr);
FF.write(wenben.getText());
FF.close();
}catch(Exception ex){
ex.printStackTrace();
}
}else if(e.getActionCommand().equals("退出"))
{
System.exit(0);
}else if(e.getActionCommand().equals("撤消"))
{}else if(e.getActionCommand().equals("剪切"))
{
wenben.cut();
}else if(e.getActionCommand().equals("复制"))
{
wenben.copy();
}else if(e.getActionCommand().equals("粘贴"))
{
wenben.paste();
}else if(e.getActionCommand().equals("删除"))
{}

}
public static void main(String[]args)
{ Caidan n=new Caidan();
kuang.setSize(600,600);
kuang.setLocation(300,300);
kuang.setBackground(Color.white);
kuang.add(wenben);
kuang.setJMenuBar(caidan);
kuang.setVisible(true);
}
}

是这样吗??
----------------解决方案--------------------------------------------------------
String wen[]={"新建","打开","保存","另存为","退出"};
String bian[]={"撤消","剪切","复制","粘贴","删除"};
JMenuItem a[]=new JMenuItem[wen.length];
JMenuItem a1[]=new JMenuItem[bian.length];
这些定义为成员变量,赋值可以在方法里
----------------解决方案--------------------------------------------------------

恩。知道了。。


----------------解决方案--------------------------------------------------------

想问问。。为什么我保存文件时。换不了行??


----------------解决方案--------------------------------------------------------
linewrap();这个方法自动换行
----------------解决方案--------------------------------------------------------