Java 如何删除JMenu项中的空格

Java 如何删除JMenu项中的空格,java,swing,user-interface,jpanel,jmenuitem,Java,Swing,User Interface,Jpanel,Jmenuitem,到现在为止,我有这个 这是我的MyFrame1的源代码: import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.Insets; import java.awt.Color; import java.awt.Color.*; import java.awt.Font; import java.awt.Font.*; import java.io.*; import java.io.BufferedReader

到现在为止,我有这个

这是我的
MyFrame1
的源代码:

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Color;
import java.awt.Color.*;
import java.awt.Font;
import java.awt.Font.*;
import java.io.*;
import java.io.BufferedReader;
import java.io.FileReader;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;

public class Test
{
    public static void main(String[] args)
    {
        new Test();
    }

    public Test()
    {
        String line = "";

        EventQueue.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                try
                {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } 
                catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e)
                {
                    e.printStackTrace();
                }

                JMenuBar mBar = new JMenuBar();

                //creating new JMenuItem
                JMenuItem mHelp = new JMenuItem("Help");
                JMenuItem mCredits = new JMenuItem("Credits");
                JMenuItem mExit = new JMenuItem("Exit");

                /*try
                {
                    BufferedReader br = new BufferedReader(new FileReader("1.txt"));
                    line  = br.readLine();

                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }*/
                JLabel jUser = new JLabel("User is: " );

                mHelp.setOpaque(false);
                mHelp.setForeground(Color.DARK_GRAY);
                mHelp.setFont(new Font("Verdana", Font.PLAIN,12));
                mCredits.setOpaque(false);
                mCredits.setForeground(Color.DARK_GRAY);
                mCredits.setFont(new Font("Verdana", Font.PLAIN,12));
                mExit.setOpaque(false);
                mExit.setForeground(Color.DARK_GRAY);
                mExit.setFont(new Font("Verdana", Font.PLAIN,12));

                mBar.add(mHelp);
                mBar.add(mCredits);
                mBar.add(mExit);
                mBar.add(jUser);
                //mBar.add(line);

                JFrame frame = new JFrame("MYFRAME");
                frame.setJMenuBar(mBar);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
                frame.setResizable(false);
            }
        });
    }

    public class TestPane extends JPanel
    {
        public TestPane()
        {
            setBorder(new EmptyBorder(20, 20, 20, 20));
            setLayout(new GridLayout(3, 3, 60, 60));
            add(makeButton("Account Code"));
            add(makeButton("Unit Details"));
            add(makeButton("Item Details"));
            add(makeButton("Clearing"));
            add(makeButton("Search"));
            add(makeButton("Exit"));
        }

        protected JButton makeButton(String text)
        {
            JButton btn = new JButton(text);
            btn.setFont(new Font("Verdana", Font.PLAIN,18));
            btn.setMargin(new Insets(30, 30, 30, 30));
            btn.setBackground(Color.blue);
            btn.setOpaque(true);
            btn.setBorderPainted(false);
            return btn;
        }
    }
}
我还是个新手,对Java和GUI仍有一点了解。我仍然在学习它,所以我在我的程序上做试错。 我试过使用UIManager或UILayout,但仍然不适合我,或者我仍然不知道如何使用它。 我真的很想学习更多关于GUI和Java的知识,请帮助我。任何意见、评论、建议都将被接受并受到赞赏

我的框架1:

至于我的目标是这种产品的产量,请。请看下一张图片

我的愿望输出:


另外,如果你注意到有一个bufferedReader,我正在练习用字符串读取“1.txt”,并将其作为标签或(仍然不知道)放在菜单栏中

您应该将
JMenuItem
s添加到
JMenu
对象中,然后将
JMenu
s添加到
JMenuBar

JMenuBar mBar = new JMenuBar();

            //creating new JMenuItem
            JMenuItem mHelp = new JMenuItem("Help");
            JMenu help = new JMenu("Help");
            help.add(mHelp);

            JMenuItem mCredits = new JMenuItem("Credits");
            JMenu credits = new JMenu("Credits");
            credits.add(mCredits);

            JMenuItem mExit = new JMenuItem("Exit");
            JMenu exit = new JMenu("Exit");
            exit.add(exit);
            /*try
            {
                BufferedReader br = new BufferedReader(new FileReader("1.txt"));
                line  = br.readLine();

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }*/
            JLabel jUser = new JLabel("User is: " );

            mHelp.setOpaque(false);
            mHelp.setForeground(Color.DARK_GRAY);
            mHelp.setFont(new Font("Verdana", Font.PLAIN,12));
            mCredits.setOpaque(false);
            mCredits.setForeground(Color.DARK_GRAY);
            mCredits.setFont(new Font("Verdana", Font.PLAIN,12));
            mExit.setOpaque(false);
            mExit.setForeground(Color.DARK_GRAY);
            mExit.setFont(new Font("Verdana", Font.PLAIN,12));

            mBar.add(help);
            mBar.add(credits);
            mBar.add(exit);
但是将
JLabel
添加到
JMenuBar
不是一个好主意。如果您想在问题中描述类似的内容,您可能需要将
JPanel
添加到框架的
north
区域,然后将用户标签添加到
FlowLayout。该面板的拖尾
区域:

mBar.add(help);
            mBar.add(credits);
            mBar.add(exit);
            //mBar.add(jUser);
            //mBar.add(line);

            JPanel statusPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
            statusPanel.add(jUser);
            statusPanel.add(new JLabel("Loen Seto"));

            JFrame frame = new JFrame("MYFRAME");
            frame.setJMenuBar(mBar);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(statusPanel, BorderLayout.NORTH);
            frame.add(new TestPane(), BorderLayout.CENTER);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setResizable(false);

祝您好运

您应该将
JMenuItem
s添加到
JMenu
对象中,然后将
JMenu
s添加到
JMenuBar

JMenuBar mBar = new JMenuBar();

            //creating new JMenuItem
            JMenuItem mHelp = new JMenuItem("Help");
            JMenu help = new JMenu("Help");
            help.add(mHelp);

            JMenuItem mCredits = new JMenuItem("Credits");
            JMenu credits = new JMenu("Credits");
            credits.add(mCredits);

            JMenuItem mExit = new JMenuItem("Exit");
            JMenu exit = new JMenu("Exit");
            exit.add(exit);
            /*try
            {
                BufferedReader br = new BufferedReader(new FileReader("1.txt"));
                line  = br.readLine();

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }*/
            JLabel jUser = new JLabel("User is: " );

            mHelp.setOpaque(false);
            mHelp.setForeground(Color.DARK_GRAY);
            mHelp.setFont(new Font("Verdana", Font.PLAIN,12));
            mCredits.setOpaque(false);
            mCredits.setForeground(Color.DARK_GRAY);
            mCredits.setFont(new Font("Verdana", Font.PLAIN,12));
            mExit.setOpaque(false);
            mExit.setForeground(Color.DARK_GRAY);
            mExit.setFont(new Font("Verdana", Font.PLAIN,12));

            mBar.add(help);
            mBar.add(credits);
            mBar.add(exit);
但是将
JLabel
添加到
JMenuBar
不是一个好主意。如果您想在问题中描述类似的内容,您可能需要将
JPanel
添加到框架的
north
区域,然后将用户标签添加到
FlowLayout。该面板的拖尾
区域:

mBar.add(help);
            mBar.add(credits);
            mBar.add(exit);
            //mBar.add(jUser);
            //mBar.add(line);

            JPanel statusPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
            statusPanel.add(jUser);
            statusPanel.add(new JLabel("Loen Seto"));

            JFrame frame = new JFrame("MYFRAME");
            frame.setJMenuBar(mBar);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(statusPanel, BorderLayout.NORTH);
            frame.add(new TestPane(), BorderLayout.CENTER);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setResizable(false);

祝你好运首先你必须知道这些

JMenuBar:

菜单栏的一种实现。您可以将JMenu对象添加到菜单栏 构造菜单

JMenu:

菜单的一种实现--包含菜单项的弹出窗口 当用户在JMenuBar上选择一个项目时显示

JMenuItem:

菜单中某项的实现


因此,将您的
JMenuItem
s添加到
JMenu
,稍后将此
JMenu
添加到
JMenuBar

JMenuBar mBar = new JMenuBar();

            //creating new JMenuItem
            JMenuItem mHelp = new JMenuItem("Help");
            JMenu help = new JMenu("Help");
            help.add(mHelp);

            JMenuItem mCredits = new JMenuItem("Credits");
            JMenu credits = new JMenu("Credits");
            credits.add(mCredits);

            JMenuItem mExit = new JMenuItem("Exit");
            JMenu exit = new JMenu("Exit");
            exit.add(exit);
            /*try
            {
                BufferedReader br = new BufferedReader(new FileReader("1.txt"));
                line  = br.readLine();

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }*/
            JLabel jUser = new JLabel("User is: " );

            mHelp.setOpaque(false);
            mHelp.setForeground(Color.DARK_GRAY);
            mHelp.setFont(new Font("Verdana", Font.PLAIN,12));
            mCredits.setOpaque(false);
            mCredits.setForeground(Color.DARK_GRAY);
            mCredits.setFont(new Font("Verdana", Font.PLAIN,12));
            mExit.setOpaque(false);
            mExit.setForeground(Color.DARK_GRAY);
            mExit.setFont(new Font("Verdana", Font.PLAIN,12));

            mBar.add(help);
            mBar.add(credits);
            mBar.add(exit);


输出:


首先,你必须知道这些

JMenuBar:

菜单栏的一种实现。您可以将JMenu对象添加到菜单栏 构造菜单

JMenu:

菜单的一种实现--包含菜单项的弹出窗口 当用户在JMenuBar上选择一个项目时显示

JMenuItem:

菜单中某项的实现


因此,将您的
JMenuItem
s添加到
JMenu
,稍后将此
JMenu
添加到
JMenuBar

JMenuBar mBar = new JMenuBar();

            //creating new JMenuItem
            JMenuItem mHelp = new JMenuItem("Help");
            JMenu help = new JMenu("Help");
            help.add(mHelp);

            JMenuItem mCredits = new JMenuItem("Credits");
            JMenu credits = new JMenu("Credits");
            credits.add(mCredits);

            JMenuItem mExit = new JMenuItem("Exit");
            JMenu exit = new JMenu("Exit");
            exit.add(exit);
            /*try
            {
                BufferedReader br = new BufferedReader(new FileReader("1.txt"));
                line  = br.readLine();

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }*/
            JLabel jUser = new JLabel("User is: " );

            mHelp.setOpaque(false);
            mHelp.setForeground(Color.DARK_GRAY);
            mHelp.setFont(new Font("Verdana", Font.PLAIN,12));
            mCredits.setOpaque(false);
            mCredits.setForeground(Color.DARK_GRAY);
            mCredits.setFont(new Font("Verdana", Font.PLAIN,12));
            mExit.setOpaque(false);
            mExit.setForeground(Color.DARK_GRAY);
            mExit.setFont(new Font("Verdana", Font.PLAIN,12));

            mBar.add(help);
            mBar.add(credits);
            mBar.add(exit);


输出:


太好了,谢谢。如何在帧的北部区域创建JPanel,然后在该面板的东部添加jlabel?你能告诉我怎么做吗?太好了,谢谢。如何在帧的北部区域创建JPanel,然后在该面板的东部添加jlabel?你能告诉我怎么做吗?