JAVA - Как поставить JMenuBar на вершину? [Дубликат]

использовать reset --soft origin /, это вернет исходную головку и даст вам возможность работать с изменениями. они могут быть отброшены или

6
задан mKorbel 21 July 2012 в 07:48
поделиться

3 ответа

Не уверен, что вы ищете, но вы можете добавить JMenuBar в JFrame - JFrame.setJMenuBar () . Подробнее см. Как использовать меню .

Редактировать:

Ниже приведен слишком упрощенный пример неупорядоченного фрейма с меню, просто для демонстрации идеи.

Вы можете обратиться к существующим решениям - для этой цели JIDE имеет ResizableFrame. Это часть открытого источника JIDE-oss . Вещество L & amp; F поддерживает настройку заголовка (см. Что случилось с веществом LaF? ). Вы также можете очень эффективно использовать классы ComponentMover и ComponentResizer by @camickr, см. Статью Resizing Components для более подробной информации.

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

public class UndecoratedFrameDemo {
    private static Point point = new Point();

    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        frame.setUndecorated(true);
        frame.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                point.x = e.getX();
                point.y = e.getY();
            }
        });
        frame.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                Point p = frame.getLocation();
                frame.setLocation(p.x + e.getX() - point.x,
                        p.y + e.getY() - point.y);
            }
        });

        frame.setSize(300, 300);
        frame.setLocation(200, 200);
        frame.setLayout(new BorderLayout());

        frame.getContentPane().add(new JLabel("Drag to move", JLabel.CENTER),
                BorderLayout.CENTER);

        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("Menu");
        menuBar.add(menu);
        JMenuItem item = new JMenuItem("Exit");
        item.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        menu.add(item);
        frame.setJMenuBar(menuBar);

        frame.setVisible(true);
    }
}
9
ответ дан Community 19 August 2018 в 11:20
поделиться
  • 1
    Я ищу, что MenuBar находится в фактической границе окна. Если вы посмотрите на графический интерфейс фотошопа, меню File / Edit / Etc находится на границе окна. Вместо панели меню, использующей собственное пространство, в ней используется пространство границ окна / декорации. – Frizinator 21 July 2012 в 05:11
  • 2
    Ну, вы можете удалить украшение рамки и создать свой собственный - setUndecorated (true) – tenorsax 21 July 2012 в 05:37
  • 3
    @StevenTylerFrizell Я включил пример неупорядоченного фрейма. – tenorsax 21 July 2012 в 06:16

Я сделал несколько копаний, а короткий ответ - нет.

В основном оформление кадра отключено от ОС, поэтому у нас нет никакого доступа к его содержимому.

Однако, если вы хотите много работать, вы можете реализовать свое собственное оформление. Вы должны взять на себя ответственность за изменение размера и перемещение.

Возможно, вы захотите проверить

http://java-swing-tips.blogspot.com.au/ 2010/05 / custom-decoration-titlebar-jframe.html и http://www.paulbain.com/2009/10/13/howto-draggabe-jframe-without-decoration/ для идей

1
ответ дан MadProgrammer 19 August 2018 в 11:20
поделиться
  • 1
    Еще одна идея, которую я имел, заключалась в том, чтобы использовать JInternalFrame в качестве основы для украшения, возможно, украсть кнопки, например – MadProgrammer 22 July 2012 в 05:07

Попробуйте это ...

Добавление JMenuBar в JFrame

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

Добавление JMenuBar в JPanel

JMenuBar menuBar = new JMenuBar();
myPanel.add(menuBar);

См. это JMenuBar Tutorial link для получения дополнительной информации по этой теме.

2
ответ дан Stéphane Bruckert 19 August 2018 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: