尝试创建自定义布局

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 结合使用。我无法在布局中添加 jmenubar I 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(菜单); 返回菜单栏;

【讨论】:

以上是关于尝试创建自定义布局的主要内容,如果未能解决你的问题,请参考以下文章

CheckView的CheckedTextView自定义布局

创建自定义布局 ExtJs 4.1

如何使用自定义布局创建 android 小吃店 [重复]

在运行时创建、存储和扩展自定义布局

如何在android中的布局内创建自定义菜单?

在我的自定义 collectionView 布局中未调用 prepare()