super("记事本");
JMenuBar mBar=new JMenuBar();
JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
char[] [] mC={{'F','E','O','V','H'},
{'N','O','S','X'},
{'U','T','C','P','L','A'},
{'F'},
{'S'},
{'H','A'} };
JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
{new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
{new JMenuItem("字体(F)")},
{new JMenuItem("状态栏(S)")},
{new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
setJMenuBar(mBar);
int i,j;
for(i=0;i<mA.length;i++)
{
mBar.add(mA[i]);
mA[i].setMnemonic(mC[0][i]);
for(j=0;j<mI[i].length-1;j++);
{
mA[i].add(mI[i][j]);
mI[i][j].setMnemonic(mC[i+1][j]);
}
}
这是我的一段代码,将整个程序运行后,每个菜单下面怎么只有一个子菜单,请教大神,这是怎么回事?Java记事本代码调试
JMenuBar mBar=new JMenuBar();
JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
char[] [] mC={{'F','E','O','V','H'},
{'N','O','S','X'},
{'U','T','C','P','L','A'},
{'F'},
{'S'},
{'H','A'} };
JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
{new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
{new JMenuItem("字体(F)")},
{new JMenuItem("状态栏(S)")},
{new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
setJMenuBar(mBar);
int i,j;
for(i=0;i<mA.length;i++)
{
mBar.add(mA[i]);
mA[i].setMnemonic(mC[0][i]);
for(j=0;j<mI[i].length-1;j++);
{
mA[i].add(mI[i][j]);
mI[i][j].setMnemonic(mC[i+1][j]);
}
}
这是我的一段代码,将整个程序运行后,每个菜单下面怎么只有一个子菜单,请教大神,这是怎么回事?Java记事本代码调试
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.*;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileNameExtensionFilter;
@SuppressWarnings("serial")
public class Jishiben extends JFrame { static JTextArea textarea;
static JFrame frame;
static JLabel label_1;
static JLabel label_2;
class xinjian implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
textarea.setText("");
}
}
class dakai implements ActionListener
{
public void actionPerformed(ActionEvent e){
JFileChooser jf=new JFileChooser();
FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
jf.addChoosableFileFilter(filter);
jf.showOpenDialog(Jishiben.this);
String fileName=jf.getSelectedFile().getAbsolutePath().trim();
try{
BufferedReader br=new BufferedReader(new FileReader(fileName));
String S;
for(S=br.readLine();S!=null;S=br.readLine())
textarea.append(S+"\n");
br.close();
}catch(IOException a){
System.out.println("Open file error");
a.printStackTrace();
}
}
}
class baocun implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JFileChooser jf=new JFileChooser();
FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
jf.addChoosableFileFilter(filter);
jf.showOpenDialog(Jishiben.this);
String fileName=jf.getSelectedFile().getAbsolutePath().trim();
if(fileName!=null)
try{
BufferedWriter bw=new BufferedWriter(new FileWriter(fileName+".txt"));
PrintWriter pr=new PrintWriter(bw);
pr.println(textarea.getText());
bw.close();
}catch(IOException a){
System.out.println("Save file error");
a.printStackTrace();
}
}
}
class tuichu implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
}
class jianqie implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.cut();
}
}
class fuzhi implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.copy();
}
}
class zhantie implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.paste();
}
}
class quanxuan implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.selectAll();
}
}
class shanchu implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.replaceRange("",textarea.getSelectionStart(),textarea.getSelectionEnd());
}
}
class ziti implements ActionListener
{
JComboBox cb_1;
JComboBox cb_2;
JComboBox cb_3;
Font[] fa={new Font("宋体",Font.BOLD,16),new Font("楷体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
Font[] fb={new Font("宋体",Font.BOLD,16),new Font("宋体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
Font[] fc={new Font("宋体",Font.PLAIN,16),new Font("宋体",Font.PLAIN,25),new Font("Arial",Font.PLAIN,10)};
class xuanziti implements ItemListener
{
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(cb_1.getSelectedIndex()==1)
textarea.setFont(fa[1]);
else if(cb_1.getSelectedIndex()==2)
textarea.setFont(fa[2]);
else
textarea.setFont(fa[0]);
}
}
class xuanzixing implements ItemListener
{ @Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(cb_2.getSelectedIndex()==1)
textarea.setFont(fb[1]);
else if(cb_2.getSelectedIndex()==2)
textarea.setFont(fa[2]);
else
textarea.setFont(fa[0]);
}
}
class xuandaxiao implements ItemListener
{
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(cb_3.getSelectedIndex()==1)
textarea.setFont(fc[1]);
else if(cb_3.getSelectedIndex()==2)
textarea.setFont(fc[2]);
else
textarea.setFont(fc[0]);
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JDialog jd=new JDialog(frame,"设置字体",false);
java.awt.Container c=jd.getContentPane();
String [] ziti={"宋体","楷体","Arial"};
String [] zixing={"粗体","斜体","正常"};
String [] daxiao={"大","中","小"};
cb_1=new JComboBox(ziti);
cb_2=new JComboBox(zixing);
cb_3=new JComboBox(daxiao);
c.setLayout(new FlowLayout());
c.add(cb_1);
cb_1.addItemListener(new xuanziti());
c.add(cb_2);
cb_2.addItemListener(new xuanzixing());
c.add(cb_3);
cb_3.addItemListener(new xuandaxiao());
jd.setSize(300,100);
jd.setVisible(true);
}
}
class zhuangtailan implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
label_2.setText("走总共:Ln"+textarea.getLineCount());
}
}
class bangzhu implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JDialog jd=new JDialog(frame,"帮助主题",false);
Container c=jd.getContentPane();
c.add(new JLabel("使用方法基本与Windows记事本相同,正在努力完善中......"));
jd.setSize(400,200);
jd.setVisible(true);
}
}
class guanyujishiben implements ActionListener
{
JLabel j1=new JLabel("版权所有,违法必究");
int i=0;
class xiayitiao implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
if(i<S.length)
i++;
j1.setText(S[i]);
}
}
class shangyitiao implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
if(i>0)
i--;
j1.setText(S[i]);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JDialog jd=new JDialog(frame,"欢迎使用",false);
Container c=jd.getContentPane();
JPanel jp=new JPanel();
JButton jbs=new JButton("下一条");
JButton jbx=new JButton("上一条");
jbs.addActionListener(new xiayitiao());
jbx.addActionListener(new shangyitiao());
jp.add(jbs);
jp.add(jbx);
c.setLayout(new BorderLayout());
c.add(j1,BorderLayout.CENTER);
c.add(jp,BorderLayout.SOUTH);
jd.setSize(400,200);
jd.setVisible(true);
}
}
public Jishiben()
{
super("记事本");
JMenuBar mBar=new JMenuBar();
JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
char[] [] mC={{'F','E','O','V','H'},
{'N','O','S','X'},
{'U','T','C','P','L','A'},
{'F'},
{'S'},
{'H','A'} };
JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
{new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
{new JMenuItem("字体(F)")},
{new JMenuItem("状态栏(S)")},
{new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
setJMenuBar(mBar);
int i,j;
for(i=0;i<mA.length;i++)
{
mBar.add(mA[i]);
mA[i].setMnemonic(mC[0][i]);
for(j=0;j<mI[i].length-1;j++);
{
mA[i].add(mI[i][j]);
mI[i][j].setMnemonic(mC[i+1][j]);
}
}
mI[0][0].addActionListener(new xinjian());
mI[0][1].addActionListener(new dakai());
mI[0][2].addActionListener(new baocun());
mI[0][3].addActionListener(new tuichu());
mI[1][0].addActionListener(new jianqie());
mI[1][1].addActionListener(new fuzhi());
mI[1][2].addActionListener(new zhantie());
mI[1][3].addActionListener(new quanxuan());
mI[1][4].addActionListener(new shanchu());
mI[2][0].addActionListener(new ziti());
mI[3][0].addActionListener(new zhuangtailan());
mI[4][0].addActionListener(new bangzhu());
mI[4][1].addActionListener(new guanyujishiben());
}
public static void main(String args[])
{
frame=new Jishiben();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
Container c=frame.getContentPane();
c.setLayout(new BorderLayout());
textarea=new JTextArea();
JScrollPane sta=new JScrollPane(textarea);
label_2=new JLabel("总共:Ln 0",JLabel.RIGHT);
label_2.setSize(800,200);
c.add(sta,BorderLayout.CENTER);
c.add(label_2,BorderLayout.SOUTH);
frame.setVisible(true);
}
}
package com.hr.base;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.*;import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileNameExtensionFilter;
@SuppressWarnings("serial")
public class Jishiben extends JFrame { static JTextArea textarea;
static JFrame frame;
static JLabel label_1;
static JLabel label_2;
class xinjian implements ActionListener{
public void actionPerformed(ActionEvent e)
{
textarea.setText("");
}
}
class dakai implements ActionListener{
public void actionPerformed(ActionEvent e){
JFileChooser jf=new JFileChooser();
FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
jf.addChoosableFileFilter(filter);
jf.showOpenDialog(Jishiben.this);
String fileName=jf.getSelectedFile().getAbsolutePath().trim();
try{
BufferedReader br=new BufferedReader(new FileReader(fileName));
String S;
for(S=br.readLine();S!=null;S=br.readLine())
textarea.append(S+"\n");
br.close();
}catch(IOException a){
System.out.println("Open file error");
a.printStackTrace();
}
}
}
class baocun implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JFileChooser jf=new JFileChooser();
FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
jf.addChoosableFileFilter(filter);
jf.showOpenDialog(Jishiben.this);
String fileName=jf.getSelectedFile().getAbsolutePath().trim();
if(fileName!=null)
try{
BufferedWriter bw=new BufferedWriter(new FileWriter(fileName+".txt"));
PrintWriter pr=new PrintWriter(bw);
pr.println(textarea.getText());
bw.close();
}catch(IOException a){
System.out.println("Save file error");
a.printStackTrace();
}
}
}
class tuichu implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
}
class jianqie implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.cut();
}
}
class fuzhi implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.copy();
}
}
class zhantie implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.paste();
}
}
class quanxuan implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.selectAll();
}
}
class shanchu implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textarea.replaceRange("",textarea.getSelectionStart(),textarea.getSelectionEnd());
}
}
class ziti implements ActionListener{
JComboBox cb_1;
JComboBox cb_2;
JComboBox cb_3;
Font[] fa={new Font("宋体",Font.BOLD,16),new Font("楷体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
Font[] fb={new Font("宋体",Font.BOLD,16),new Font("宋体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
Font[] fc={new Font("宋体",Font.PLAIN,16),new Font("宋体",Font.PLAIN,25),new Font("Arial",Font.PLAIN,10)};
class xuanziti implements ItemListener{
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(cb_1.getSelectedIndex()==1)
textarea.setFont(fa[1]);
else if(cb_1.getSelectedIndex()==2)
textarea.setFont(fa[2]);
else
textarea.setFont(fa[0]);
}
}
class xuanzixing implements ItemListener{
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(cb_2.getSelectedIndex()==1)
textarea.setFont(fb[1]);
else if(cb_2.getSelectedIndex()==2)
textarea.setFont(fa[2]);
else
textarea.setFont(fa[0]);
}
}
class xuandaxiao implements ItemListener{
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(cb_3.getSelectedIndex()==1)
textarea.setFont(fc[1]);
else if(cb_3.getSelectedIndex()==2)
textarea.setFont(fc[2]);
else
textarea.setFont(fc[0]);
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JDialog jd=new JDialog(frame,"设置字体",false);
java.awt.Container c=jd.getContentPane();
String [] ziti={"宋体","楷体","Arial"};
String [] zixing={"粗体","斜体","正常"};
String [] daxiao={"大","中","小"};
cb_1=new JComboBox(ziti);
cb_2=new JComboBox(zixing);
cb_3=new JComboBox(daxiao);
c.setLayout(new FlowLayout());
c.add(cb_1);
cb_1.addItemListener(new xuanziti());
c.add(cb_2);
cb_2.addItemListener(new xuanzixing());
c.add(cb_3);
cb_3.addItemListener(new xuandaxiao());
jd.setSize(300,100);
jd.setVisible(true);
}
}
class zhuangtailan implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
label_2.setText("走总共:Ln"+textarea.getLineCount());
}
}
class bangzhu implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JDialog jd=new JDialog(frame,"帮助主题",false);
Container c=jd.getContentPane();
c.add(new JLabel("使用方法基本与Windows记事本相同,正在努力完善中......"));
jd.setSize(400,200);
jd.setVisible(true);
}
}
class guanyujishiben implements ActionListener{
JLabel j1=new JLabel("版权所有,违法必究");
int i=0;
class xiayitiao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
if(i<S.length)
i++;
j1.setText(S[i]);
}
}
class shangyitiao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
if(i>0)
i--;
j1.setText(S[i]);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JDialog jd=new JDialog(frame,"欢迎使用",false);
Container c=jd.getContentPane();
JPanel jp=new JPanel();
JButton jbs=new JButton("下一条");
JButton jbx=new JButton("上一条");
jbs.addActionListener(new xiayitiao());
jbx.addActionListener(new shangyitiao());
jp.add(jbs);
jp.add(jbx);
c.setLayout(new BorderLayout());
c.add(j1,BorderLayout.CENTER);
c.add(jp,BorderLayout.SOUTH);
jd.setSize(400,200);
jd.setVisible(true);
}
}
public Jishiben(){
super("记事本");
JMenuBar mBar=new JMenuBar();
JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
char[] [] mC={{'F','E','O','V','H'},
{'N','O','S','X'},
{'U','T','C','P','L','A'},
{'F'},
{'S'},
{'H','A'} };
JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
{new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
{new JMenuItem("字体(F)")},
{new JMenuItem("状态栏(S)")},
{new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
setJMenuBar(mBar);
int i,j;
for(i=0;i<mA.length;i++){
mBar.add(mA[i]);
mA[i].setMnemonic(mC[0][i]);
for(j=0;j<mI[i].length;j++){
mA[i].add(mI[i][j]);
mI[i][j].setMnemonic(mC[i+1][j]);
}
}
mI[0][0].addActionListener(new xinjian());
mI[0][1].addActionListener(new dakai());
mI[0][2].addActionListener(new baocun());
mI[0][3].addActionListener(new tuichu());
mI[1][0].addActionListener(new jianqie());
mI[1][1].addActionListener(new fuzhi());
mI[1][2].addActionListener(new zhantie());
mI[1][3].addActionListener(new quanxuan());
mI[1][4].addActionListener(new shanchu());
mI[2][0].addActionListener(new ziti());
mI[3][0].addActionListener(new zhuangtailan());
mI[4][0].addActionListener(new bangzhu());
mI[4][1].addActionListener(new guanyujishiben());
}
public static void main(String args[]){
frame=new Jishiben();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
Container c=frame.getContentPane();
c.setLayout(new BorderLayout());
textarea=new JTextArea();
JScrollPane sta=new JScrollPane(textarea);
label_2=new JLabel("总共:Ln 0",JLabel.RIGHT);
label_2.setSize(800,200);
c.add(sta,BorderLayout.CENTER);
c.add(label_2,BorderLayout.SOUTH);
frame.setVisible(true);
}
}问题集中在305行,你这行原来的代码是 for(j=0;j<mI[i].length-1;j++);第一: 多了个分号,这就是为什么只显示每个数组的第一个item;
第二: "j<mI[i].length-1",已经小于了,就不能再减一了。
改为: for(j=0;j<mI[i].length;j++)就可以正确显示了。