簡體   English   中英

MenuBar出現在JFrame的左側。 如何使其顯示在JFrame的頂部?

[英]MenuBar appears of the left of the JFrame. how to make it appear on the top of JFrame?

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

 class Test extends JFrame 
 {
    JButton qb=new JButton("quit");
    JPanel p1=new JPanel();
    JMenuBar menubar = new JMenuBar();
   JMenu file = new JMenu("File");
   JMenuItem eMenuItem = new JMenuItem("Exit");
    public Test()
   {
    //setLayout();
    setTitle("this is a test");
    setSize(300,300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setAlwaysOnTop(true);
    setResizable(true);
    setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );//to set initial state of frame as minimized
    menubar.add(file);
    add(menubar);
    file.add(eMenuItem);

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

}

我已經編寫了上面的代碼,並試圖找出菜單欄為何出現在框架左側但失敗的原因。 也layoutmanager在測試構造函數中不起作用。 我也試圖在代碼中插入一個按鈕,但它也沒有出現。 那么,這種框架行為的可能原因是什么?解決方案是什么?

您可以使用帶有下一個代碼的BorderLayout (默認)將菜單添加到容器中:

add(menubar);

但是要向JFrame添加菜單,您可以使用下一行來代替。

setJMenuBar(menubar);

輸出:

在此處輸入圖片說明

您可以嘗試調用setJMenuBar(..)

從更改您的代碼

    menubar.add(file);
    add(menubar);
    file.add(eMenuItem);

menubar.add(file);
file.add(eMenuItem);
this.setJMenuBar(menubar);

它將正常工作。

只是你這樣放

add(menubar,BorderLayout.NORTH);

這就是你要找的

  import javax.swing.*;

import java.awt.GridBagLayout;
import java.awt.event.*;
//import java.awt.event.ActionListener;

 class Test extends JFrame 
 {
    JButton qb=new JButton("quit");
    JPanel p1=new JPanel();

JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem eMenuItem = new JMenuItem("Exit");
public Test()
{

    setTitle("this is a test");
    setSize(300,300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setAlwaysOnTop(true);
    setResizable(true);
    setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );//to set initial state of frame as minimized
    menubar.add(file);
    setJMenuBar(menubar);
    file.add(eMenuItem);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM