2011-09-26 66 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'符號:) –