Java 添加菜单到框架

标签 java menu menuitem

我正在尝试编写一个剪贴板程序,可以复制/粘贴并保存到txt 文件。 当程序运行时,我试图将按钮更改为带有 MenuItems 的菜单, 但是,我无法弄清楚如何正确使用菜单项,因为我无法将其添加到面板中。

请注意,我使用的是 AWT 而不是 Swing,因此没有 JPanel/JFrame 等。 如有任何提示/帮助,我们将不胜感激。

这是我的代码,并尝试将其更改为菜单,请让我知道我做错了什么:

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class CheesyWP extends Frame implements ActionListener {

    /**
     * @param args
     */

    //new panel for menu
    Panel north;

    //original
    Panel center;
    Panel south;
    Button save;
    Button load;
    Button clip;
    Button finish;
    Menu mn;
    MenuItem mSave;
    MenuItem mLoad;
    MenuItem mClip;
    MenuItem mFinish;
    TextArea ta;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CheesyWP cwp = new CheesyWP();
        cwp.doIt();

    }

    public void doIt() {
        center = new Panel();
        south = new Panel();
        clip = new Button("Open Clipboard");
        save = new Button("Save");
        load = new Button("Load");
        finish = new Button("Finish");

        //menu items
        north = new Panel();
        mn = new Menu();
        mSave = new MenuItem("Save");
        mLoad = new MenuItem("Load");
        mClip = new MenuItem("Open Clipboard");
        mFinish = new MenuItem("Finish");
        mn.add(mSave);
        mn.add(mLoad);
        mn.add(mClip);
        mn.add(mFinish);
        mSave.addActionListener(this);
        mLoad.addActionListener(this);
        mClip.addActionListener(this);
        mFinish.addActionListener(this);
        //north.add(mn); <-------//PROBLEM HERE

        clip.addActionListener(this);
        save.addActionListener(this);
        load.addActionListener(this);
        finish.addActionListener(this);
        ta = new TextArea(20, 80);
        center.add(ta);
        south.add(load);
        south.add(save);
        south.add(clip);
        south.add(finish);
        this.add(center, BorderLayout.CENTER);
        this.add(south, BorderLayout.SOUTH);
        this.setSize(600, 300);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent ae) {
        if (ae.getSource() == save) {
            try {
                File junk = new File("junk.txt");
                FileWriter fw = new FileWriter(junk);
                fw.write(ta.getText()); // write whole TextArea contents
                fw.close();
            } catch (IOException ioe) {
            }
        }// ends if
        if (ae.getSource() == load) {
            String temp = "";
            try {
                File junk = new File("junk.txt");
                FileReader fr = new FileReader(junk);
                BufferedReader br = new BufferedReader(fr);
                while ((temp = br.readLine()) != null) {
                    ta.append(temp + "\n");
                }
                br.close();
            } catch (FileNotFoundException fnfe) {
            } catch (IOException ioe) {
            }
        }
        if (ae.getSource() == finish) {
            System.exit(0);
        }
        if(ae.getSource()==clip){
            new ClipBoard();
        }
    }

    class ClipBoard extends Frame {
        public ClipBoard() { // a constructor
            this.setTitle("Clipboard");
            this.setLayout(new FlowLayout());
            this.add(new TextArea(10, 50));
            this.setSize(400, 160);
            this.setVisible(true);
        }
    }
}

最佳答案

我希望这段代码对您有所帮助:

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class JMenuTest extends JFrame {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public JMenuTest() {

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

        JMenu connectionMenu = new JMenu("Connection");
        menuBar.add(connectionMenu);

        JMenuItem menuItemConnect = new JMenuItem("Connect");
        menuItemConnect.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("Connected");
            }
        });
        connectionMenu.add(menuItemConnect);

        JMenuItem menuItemDisconnect = new JMenuItem("Disconnect");
        menuItemDisconnect.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("Disconnected");
            }
        });
        connectionMenu.add(menuItemDisconnect);

        JMenuItem menuItemExit = new JMenuItem("Exit");
        menuItemExit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }  
        });
        connectionMenu.add(menuItemExit);

        JMenu mnNewMenu_1 = new JMenu("New menu");
        menuBar.add(mnNewMenu_1);

        this.setVisible(true);
        this.setSize(300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
         new JMenuTest();

    }

}

关于Java 添加菜单到框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617239/

相关文章:

java - 将c#函数代码转换为java

html - Css 下拉菜单向下推送内容 - 新手修复?

javascript - 修复了单页网站问题中的切换菜单

java - 平面文件解析: when some fields contain the delimiter

java - Java URL 中的中文字符

java - Java 中的可变长度(动态)数组

c# - 用于类型 'MenuItem' 的样式不能应用于类型 'Separator'

Android:上/下动画滑动菜单

css - Avada 主题、Wordpress、Header Logo 定制、

android - 从 onCreateOptionsMenu 更改 MenuItem 标题