2011-09-26 33 views
1

我遇到了我的代码问题。 (音乐)菜单的子菜单应该是单选按钮类型。使用JApplet和菜单

这是我的第一个代码:

import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 

public class AMBAT_FLAB1 extends JApplet implements ActionListener{ 

JMenuBar mainBar = new JMenuBar(); 
JMenu menu1 = new JMenu("File"); 
JMenu menu2 = new JMenu("Format"); 
JMenu menu3 = new JMenu("Background"); 
//for file 
JMenuItem open = new JMenuItem("Open"); 
JMenuItem save = new JMenuItem("Save"); 
JMenuItem reset = new JMenuItem("Reset"); 
//for format 
JMenuItem setFont = new JMenuItem("Set Font"); 
JMenuItem setColor = new JMenuItem("Set Color"); 
//for background 
JMenuItem image = new JMenuItem("Images"); 
JMenuItem music = new JMenuItem("Music"); 
//submenu of music 
JRadioButtonMenuItem play = new JRadioButtonMenuItem("Play"); 
JRadioButtonMenuItem loop = new JRadioButtonMenuItem("Loop"); 
JRadioButtonMenuItem stop = new JRadioButtonMenuItem("Stop"); 

ButtonGroup group = new ButtonGroup(); 

//file chooser 
//JFileChooser fileChooser = new JFileChooser(); 
//fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

//text area 
JTextArea myArea = new JTextArea(50, 50); 
JScrollPane scrollingArea = new JScrollPane(myArea); 

Container con = getContentPane(); 

public void init(){ 
    setJMenuBar(mainBar); 
    mainBar.add(menu1); 
    mainBar.add(menu2); 
    mainBar.add(menu3); 
    menu1.add(open); 
    menu1.add(save); 
    menu1.add(reset); 
    menu2.add(setFont); 
    menu2.add(setColor); 
    menu3.add(image); 
    menu3.add(music); 
    music.group.add(play); 
    //group.add(loop); 
    //music.add(stop); 

    open.addActionListener(this); 
    save.addActionListener(this); 
    reset.addActionListener(this); 
    setFont.addActionListener(this); 
    setColor.addActionListener(this); 
    image.addActionListener(this); 
    music.addActionListener(this); 
} 

public void actionPerformed(ActionEvent e){ 

} 
} 

当我尝试运行它,音乐菜单不会出现。它更改为播放(单选按钮)。按钮组是否有帮助?当我尝试使用按钮组时,什么都没有发生。

+0

相同的答案在另一个Java论坛 – mKorbel

+0

@mKorbel 这样?:: group.add(播放); – LittleMissChoco

+0

没有人能说这是过时的教程http://download.oracle.com/javase/tutorial/uiswing/components/menu.html和1st。示例http://www.java2s.com/Tutorial/Java/0240__Swing/0440__JRadioButtonMenuItem.htm,我发现在 – mKorbel

回答

0

您的源代码中有语法错误。尝试评论失败并重新编译的行。这应该会让你在界面(GUI)中获得更多信息。

2

是否这样?

AMBAT_FLAB1 on screen

/* <applet code='AMBAT_FLAB1' width=220 height=100></applet> */ 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class AMBAT_FLAB1 extends JApplet implements ActionListener{ 

    JMenuBar mainBar = new JMenuBar(); 
    JMenu menu1 = new JMenu("File"); 
    JMenu menu2 = new JMenu("Format"); 
    JMenu menu3 = new JMenu("Background"); 
    //for file 
    JMenuItem open = new JMenuItem("Open"); 
    JMenuItem save = new JMenuItem("Save"); 
    JMenuItem reset = new JMenuItem("Reset"); 
    //for format 
    JMenuItem setFont = new JMenuItem("Set Font"); 
    JMenuItem setColor = new JMenuItem("Set Color"); 
    //for background 
    JMenuItem image = new JMenuItem("Images"); 
    JMenu music = new JMenu("Music"); 
    //submenu of music 
    JRadioButtonMenuItem play = new JRadioButtonMenuItem("Play"); 
    JRadioButtonMenuItem loop = new JRadioButtonMenuItem("Loop"); 
    JRadioButtonMenuItem stop = new JRadioButtonMenuItem("Stop"); 

    ButtonGroup group = new ButtonGroup(); 

    //file chooser 
    //JFileChooser fileChooser = new JFileChooser(); 
    //fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

    //text area 
    JTextArea myArea = new JTextArea(50, 50); 
    JScrollPane scrollingArea = new JScrollPane(myArea); 

    Container con = getContentPane(); 

    public void init(){ 
     setJMenuBar(mainBar); 
     mainBar.add(menu1); 
     mainBar.add(menu2); 
     mainBar.add(menu3); 
     menu1.add(open); 
     menu1.add(save); 
     menu1.add(reset); 
     menu2.add(setFont); 
     menu2.add(setColor); 
     menu3.add(image); 
     menu3.add(music); 
     group.add(play); 
     group.add(loop); 
     group.add(stop); 
     music.add(play); 
     music.add(loop); 
     music.add(stop); 
     //music.add(stop); 

     open.addActionListener(this); 
     save.addActionListener(this); 
     reset.addActionListener(this); 
     setFont.addActionListener(this); 
     setColor.addActionListener(this); 
     image.addActionListener(this); 
     music.addActionListener(this); 
    } 

    public void actionPerformed(ActionEvent e){ 

    } 
} 

在代码中的错误,基本上是:

  • 如果音乐有孩子,这不得不说是一个JMenu,而不是一个JMenuItem
  • 一个ButtonGroup是一个逻辑组(例如,使一个按钮组中的单选按钮),它是不是一个容器。所以除了将按钮添加到组中之外,还需要将它们添加到音乐JMenu
+0

更好的是删除我的信息+1 – mKorbel

+0

yup。D: – LittleMissChoco

+0

@ mKorbel你的代码更好,'serialVersionUID'声明为&@ @ Override'符号:) –