【问题标题】:Java Exit Button from a MenuItem/MenuBar and Sound Player来自 MenuItem/MenuBar 和声音播放器的 Java 退出按钮
【发布时间】:2012-01-03 02:43:54
【问题描述】:

好的,我作为一个从视频/学校学习java的初学者写了这段代码,我有一些问题。

1 => 为什么文件>退出按钮不起作用并且有一个小箭头,好像有一些孩子?大退出按钮具有相同的功能。 我从这里得到启发:http://www.youtube.com/watch?src_vid=FB_wJpIdA8k&feature=iv&annotation_id=annotation_40248&v=dwLkDGm5EBc

2 => 我怎样才能使那个按钮变小?当我调整它的大小时它会更大。

3 => 有人知道一个简单的声音播放器库吗?那么当我按下那个按钮播放声音时?我尝试了一些网络示例,例如http://www.developer.com/java/other/article.php/2173111/Java-Sound-Playing-Back-Audio-Files-using-Java.htm,但不知道如何使其变得简单并在任何地方使用它,例如 SoundPlay(sound.au);

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class form4 
{
    public static void main(String[] args)
    {
        // Frame
        JFrame frame = new JFrame("Menu");
        frame.setSize(300,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Just create menubar
        JMenuBar menubar = new JMenuBar();
        frame.setJMenuBar(menubar);

        // Add an JMenu
        JMenu file = new JMenu("File");
        menubar.add(file);
        // Add an JMenuItem
        JMenuItem exit = new JMenu("Exit");
        file.add(exit);
        exit.addActionListener(new exitApp());

        // Add an JMenu
        JMenu help = new JMenu("Help");
        menubar.add(help);
        // Add an JMenuItem
        JMenuItem about = new JMenuItem("About");
        help.add(about);

        // Add an JButton
        JButton exitButton= new JButton("Exit!");
        frame.add(exitButton);
        exitButton.addActionListener(new exitApp());
        exitButton.setSize(40,40);

        frame.setVisible(true);
    }

    // Exit app
    static class exitApp implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    }
}

谢谢!

【问题讨论】:

标签: java swing jframe jbutton actionlistener


【解决方案1】:

要使退出菜单起作用,请使用 JMenuItem:

  JMenuItem exit = new JMenuItem("Exit");
  exit.addActionListener(new exitApp());
  file.add(exit);

关于您的其他问题,如何使按钮“更小”,您需要了解您将此 JButton 添加到 JFrame 的 contentPane 中,并且默认情况下 contentPane 使用 BorderLayout。因此以这种方式添加按钮将使其完全填满容器。为防止这种情况发生,您需要使用其他布局。详情请阅读如何使用 Swing 布局:A Visual Guide to the Layout Managers

【讨论】:

  • 有效,这是我的错误,我必须更仔细地看,因为我是 java 新手。谢谢你:)
  • 不管怎样,有没有一个可视化的按钮界面,就像java中的C#一样?我目前使用 Eclipse ...
  • @RowMinds:解释一下“可视按钮界面”,因为这对我来说毫无意义。如果你问是否有类似于 MS Visual Studio 的可视化 GUI 设计器,那么是的,有,但我强烈建议你在了解 Swing 的基本原理之前不要使用它。
  • 它不会运行,我的 IDE 说:“exitApp 无法解析为一种类型”我该如何修复它
  • @jakobaindreas_11:认真的。请在阅读答案之前重新阅读问题。
【解决方案2】:

以下是我如何在我的应用程序中实现它,希望对您有所帮助:

    menuBar = new JMenuBar();
    mainWindow.setJMenuBar(menuBar);

    mnFile = new JMenu("File");
    menuBar.add(mnFile);

    mntmClose = new JMenuItem("Close");
    mntmClose.setMnemonic(KeyEvent.VK_Q);
    mntmClose.setAccelerator(KeyStroke.getKeyStroke(
             KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
    mntmClose.setToolTipText("Exit application");
    mntmClose.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {
            System.exit(0);
        }

    });
    mnFile.add(mntmClose);

【讨论】:

  • 好答案,你把这个放在哪里?
  • 为 necro 道歉,但从 Java 8 开始,您可以用这个 lambda:mntmClose.addActionListener(event -> System.exit(0)); 替换那个庞大的代码片段
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多