2017-10-06 1 views
0

JMenuBarをJpanelに追加したいと思います。私が試した:frame.setJMenuBarのないJPanelでJMenuを表示

p.add(menubar, BorderLayout.NORTH); 

も:私は現在Astah-プラグインを作っていると私がする(JMenuBarのがである)のJPanelをしたいと思いますので、私はJFrameの上JSetMenuメソッドを使用したくありませんアスタで

JMenuBarをJpanelに設定して上部に行く方法を教えてください。 私はすべてのコンテンツをJpanelに入れてAstahに入れたいと思います。

Astahにそれを置くためのコード:

import com.change_vision.jude.api.inf.project.ProjectAccessor; 
import com.change_vision.jude.api.inf.project.ProjectAccessorFactory; 
import com.change_vision.jude.api.inf.project.ProjectEvent; 
import com.change_vision.jude.api.inf.project.ProjectEventListener; 
import com.change_vision.jude.api.inf.ui.IPluginExtraTabView; 
import com.change_vision.jude.api.inf.ui.ISelectionListener; 

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

public class showobjects extends JPanel implements IPluginExtraTabView, ProjectEventListener { 
public showobjects() { 
    initComponents(); 
} 

private void initComponents() { 
    setLayout(new BorderLayout()); 
    add(createLabelPane()); 
    addProjectEventListener(); 
} 

private void addProjectEventListener() { 
    try { 
     ProjectAccessor projectAccessor = ProjectAccessorFactory.getProjectAccessor(); 
     projectAccessor.addProjectEventListener(this); 
    } catch (ClassNotFoundException e) { 
     e.getMessage(); 
    } 
} 

private Container createLabelPane() { 
    JLabel label = new JLabel("showobjects "); 
    JScrollPane pane = new JScrollPane(label); 

    showobjects app = new showobjects(); 
    JPanel mainJpanel = app.createJPanel(); 


    return mainJpanel; 
} 

@Override 
public void projectChanged(ProjectEvent e) { 
} 

@Override 
public void projectClosed(ProjectEvent e) { 
} 

@Override 
public void projectOpened(ProjectEvent e) { 
} 

@Override 
public void addSelectionListener(ISelectionListener listener) { 
} 

@Override 
public Component getComponent() { 
    return this; 
} 

@Override 
public String getDescription() { 
    return "Show showobjects here"; 
} 

@Override 
public String getTitle() { 
    return "showobjects "; 
} 

public void activated() { 

} 

public void deactivated() { 

} 
} 
+0

そこに追加して、それは私がオペアンプにメニューバーを置けばいいのか私 – MadProgrammer

答えて

1

私は非常に簡単なテストを行なったし、それが私の正常に動作します。私はあなたのコードから推測することができるものに基づいて、あなたは...

あなたも、他のコンポーネントによって隠されるパネルの CENTRE(またはデフォルト)の位置に JMenuBarを置くだろう
mainJPanel.add(AuguSoftModellerobjectsNew.createMenuBar()); 

を使用しています私は非常に簡単 `JPanel`と` BorderLayout`を使用してテストしました

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test { 

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

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

       JMenuBar mb = new JMenuBar(); 
       mb.add(new JMenu("Test")); 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(mb, BorderLayout.NORTH); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     public TestPane() { 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return new Dimension(200, 200); 
     } 

} 
+0

のために正常に動作し、中央に他のものを置きますか?これを行うには境界線が適していますか?あなたの助けは非常に高く評価されます。メニューバーを手動でJPanelに配置する方法と、他のコンポーネントを表示する方法についてはわかりません。現時点ではすべてが中心に表示されているためです。 @MadProgrammer – Hye

+0

コンポーネントを「中央」位置に配置するには、上に示したものと同様に、それらのコンポーネントの主要コンテンツペインとして機能するコンポーネントが必要になるでしょう。 'TestPane'にコンポーネントを追加すると、それらはその中に含まれますが、' TestPane'自体が中心の位置を占めます – MadProgrammer

+0

私は試しましたが、動作しません、私はメインのJPanelと2つのパネルを作成しましたjmenubar)と他のコンテンツのためのもう一つ。 2つのjpanelをメインのJpanelに追加し、jmenubarを北にborderlayoutを設定しました。私は何を間違えたのですか? @MadProgrammer – Hye

関連する問題