【发布时间】:2013-06-16 17:59:23
【问题描述】:
这里可能是一个简单的问题,致力于学习使用挥杆制作 GUI 并取得轻微进展,但遇到了另一个减速带。我试图将 GUI 组件分组在不同的类中,以保持我的类较小并允许更灵活的 GUI,但是我构建了一个组件,如何将它调用到我的主类中。下面发布的是制作框架和组件的代码。我想我的调用方式存在问题,但我对如何调用它没有任何想法。任何想法都将不胜感激.....尝试将组件添加到frmMainMenu中的JFrame的问题不是很清楚,问题是当前运行时组件没有出现在Frame中
带有 JFrame 的主类
public class frmMainMenu {
public static void main(String main[]){
//Create Frame
JFrame frmMainMenu = new JFrame();
//Define Layout Manager
GridBagLayout gridBag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
frmMainMenu.setLayout(gridBag);
//Add Components
//Create Left Container
c.fill = GridBagConstraints.VERTICAL;
c.weighty = 1;
c.gridx = 0;
c.gridy = 1;
c.ipadx = 30;
frmMainMenu.add(new comLeftToolBar(),c);
frmMainMenu.setExtendedState(JFrame.MAXIMIZED_BOTH);
frmMainMenu.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//Display Frame
frmMainMenu.setVisible(true);
}
}
组件代码
public class comLeftToolBar extends JPanel{
public comLeftToolBar() {
JPanel comLeftContainer = new JPanel();
GridBagLayout leftGridBag = new GridBagLayout();
comLeftContainer.setLayout(leftGridBag);
GridBagConstraints b = new GridBagConstraints();
JToolBar comLeftToolBar = new JToolBar(JToolBar.VERTICAL);
b.gridx = 0;
b.gridy = 0;
b.ipady = 50;
JButton comNavButton = new JButton();
JButton comProButton = new JButton();
comLeftToolBar.add(comNavButton);
comLeftToolBar.add(comProButton);
comLeftContainer.add(comLeftToolBar,b);
comLeftContainer.setBorder(BorderFactory.createLineBorder(Color.black));
}
}
【问题讨论】:
-
什么不起作用?我还要看看Initial Threads
-
how do I call it to my main class- 你是什么意思?您正在使用new comLeftToolBar()这是创建类实例的方法。此外,类名应以大写字符开头。所以应该是ComLeftToolBar。 -
1) 在这种情况下不要扩展面板。而是创建并使用一个实例。 2) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。
-
我读过的大部分内容都表明扩展 JPanel 是可行的方法 (java-forums.org/awt-swing/…),并且消除扩展部分会产生错误。但是我可能会在不知道的情况下做一些不同的事情,创建和使用一个实例意味着什么,我在组件代码中创建了一个我应该如何洗牌来尝试你的建议
标签: java swing constructor components packaging