尝试创建自定义布局
Posted
技术标签:
【中文标题】尝试创建自定义布局【英文标题】:Trying to create a custom layout 【发布时间】:2013-09-15 19:17:53 【问题描述】:谁能告诉我如何在java中做这个自定义布局? 尝试在北 jpanel 网格布局中添加菜单栏,在中间 jpanel 网格布局中添加按钮+图形,然后将它们添加到具有边框布局的框架中,但没有显示。 提前致谢
class
JFrame frame ;
static JGraph jgraph ;
final mxGraph graph = new mxGraph() ;
JPanel jpanel = new JPanel() ;
...
public void GraphD()
JPanel middlePanel = new JPanel (new GridLayout (2, 0));
middlePanel.add(graphComponent);
frame.add (middlePanel, BorderLayout.CENTER);
public void imgbtn()
JPanel middlePanel = new JPanel (new GridLayout (2, 0));
JButton imgbtn = new JButton("Export as Image") ;
middlePanel.add(imgbtn);
frame.add (middlePanel, BorderLayout.CENTER);
public void Menu()
JPanel northPanel = new JPanel (new GridLayout (1, 0));
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
menuBar = new JMenuBar();
menu = new JMenu("A Menu");
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription(
"The only menu in this program that has menu items");
menuBar.add(menu);
menuItem = new JMenuItem("Option A",
KeyEvent.VK_T);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem.getAccessibleContext().setAccessibleDescription(
"This doesn't really do anything");
menu.add(menuItem);
menu.addSeparator();
submenu = new JMenu("A submenu");
submenu.setMnemonic(KeyEvent.VK_S);
menuItem = new JMenuItem("An item in the submenu");
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_2, ActionEvent.ALT_MASK));
submenu.add(menuItem);
menuItem = new JMenuItem("Another item");
submenu.add(menuItem);
menu.add(submenu);
northPanel.add(menuBar);
frame.add (northPanel, BorderLayout.CENTER);
public static void main(String[] args)
GUIquery frame = new GUIquery();
frame.setLayout (new BorderLayout ());
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 320);
frame.setVisible(true);
【问题讨论】:
你试过什么?你被困在哪里了?我想到了一个 BorderLayout,它包含一个嵌套的 FlowLayout,该 FlowLayout 包含一个使用 JPanel 的 GridLayout。 我尝试过将 BorderLayout 与 gridlayout 结合使用。我无法在布局中添加 jmenubarI cant get the jmenubar added in the layout
- 您不应该在布局中添加菜单栏。阅读 How to Use Menus 上的 Swing 教程中的部分,了解菜单栏的正确用法。
我看过了,但是 frame.setJMenuBar(menuBar);没有为我工作。它仍然没有出现。所以我也尝试将 jmenu 添加到 jpanel 中,但仍然没有用。
but frame.setJMenuBar(menuBar); didnt work for me
- 显然你做错了什么。为什么要通过将菜单添加到面板来重新发明***?按照设计使用的方式使用 Swing。您需要做的就是从教程中下载示例,向自己证明它有效。然后你比较代码看看有什么不同。这是基本的问题解决。您发布的代码没有帮助,因为它不完整。无论如何,当您对某个概念有疑问时,您应该只发布SSCCE
。
【参考方案1】:
忘记添加这两行了。谢谢
menuBar.add(菜单); 返回菜单栏;
【讨论】:
以上是关于尝试创建自定义布局的主要内容,如果未能解决你的问题,请参考以下文章