JMenuBarをJFrameまたはJRootPaneのデコレーションウィンドウに追加できるかどうか、あるいはコンテンツペインを囲む境界線を追加できるかどうか疑問に思っています。FirefoxやPhotoshopなどのアプリケーションの装飾ウィンドウにメニューバーが表示されます。
これは可能ですか?私はグーグルを見回しました、しかし私はこの種のものに関してどんな結果も見つけることができませんでした。Javaにこの機能があることを期待しています。
探しているものがわかりませんが、 -JFrame.setJMenuBar ()JMenuBar
に追加できます。詳細については、メニューの使用方法のチュートリアルを参照してください。JFrame
編集:
以下は、アイデアをデモするための、メニュー付きの装飾されていないフレームの非常に単純化された例です。
既存のソリューションに目を向けることができます-JIDEはResizableFrame
この目的のために持っています。これはオープンソースのJIDE-ossの一部です。Substance L&Fは、タイトルバーのカスタマイズをサポートしています(Substance LaFはどうなりましたか?を参照)。@camickrによるクラスを非常ComponentMover
に効率的に利用することもできます。詳細については、コンポーネントのサイズ変更の記事を参照してください。ComponentResizer
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);
}
}
これを試して...
JFrameへのJMenuBarの追加
JMenuBar menuBar = new JMenuBar();
myFrame.setJMenuBar(menuBar);
JMenuBarをJPanelに追加する
JMenuBar menuBar = new JMenuBar();
myPanel.add(menuBar);
このトピックの詳細については、このJMenuBarチュートリアルのリンクを参照してください。
私はいくつかの掘り下げを行いました、そして短い答えは...いいえです。
基本的に、フレーム装飾はOSにオフロードされているため、そのコンテンツにアクセスすることはできません。
ただし、多くの作業を行いたい場合は、独自の装飾を実装できます。ただし、サイズ変更と移動には責任を負う必要があります。
あなたはチェックアウトしたいかもしれません
http://java-swing-tips.blogspot.com.au/2010/05/custom-decorated-titlebar-jframe.htmlおよびhttp://www.paulbain.com/2009/10/13/howto-draggabe- jframe-without-decoration/アイデア用