JavaSwing:格式化对话框中的内容
我在试图格式化对话框中的JComponent位置时遇到了一些问题。我觉得这是一个已经有答案的问题,但我在寻找信息时遇到了一些问题 我尝试在元素上使用setLocation,使用自定义的JOptionPane/JDialog,但不确定是否正确,但它们总是忽略位置的格式。所有的元素都在一条水平线上 理想情况下,我喜欢上面的类名,中间的3个成员列表和底部的按钮。 我正在创建这样的对话框:JavaSwing:格式化对话框中的内容,java,swing,jpanel,jdialog,Java,Swing,Jpanel,Jdialog,我在试图格式化对话框中的JComponent位置时遇到了一些问题。我觉得这是一个已经有答案的问题,但我在寻找信息时遇到了一些问题 我尝试在元素上使用setLocation,使用自定义的JOptionPane/JDialog,但不确定是否正确,但它们总是忽略位置的格式。所有的元素都在一条水平线上 理想情况下,我喜欢上面的类名,中间的3个成员列表和底部的按钮。 我正在创建这样的对话框: JPanel createClass = new NewClass(); int result = JOption
JPanel createClass = new NewClass();
int result = JOptionPane.showConfirmDialog(GUI.this,
createClass, "Create a class",JOptionPane.OK_CANCEL_OPTION);
NewClassExtendedJPanel如下所示:
//initializes the values
className = new JTextField(10);
superName = new JTextField(10);
publicMem = new DefaultListModel<String>();
protectedMem = new DefaultListModel<String>();
privateMem = new DefaultListModel<String>();
publicMem.addElement("Test");
publicMem.addElement("Test");
pubMemList = new JList(publicMem);
protMemList = new JList(protectedMem);
privMemList = new JList(privateMem);
pubMemList.setLocation(0,0);
newMember = new ButtonController(memberCommand);
//add Components to the JPanel
add(new JLabel("Class Name:"));
add(className);
add(Box.createHorizontalStrut(15));
add(new JLabel("Super Class Name:"));
add(superName);
add(new JLabel("\n"));
add(new JLabel("Public Members :"));
add(pubMemList);
add(new JLabel("Protected Members :"));
add(protMemList);
add(new JLabel("Private Members :"));
add(privMemList);
add(newMember);
如果有人能给我指出正确的方向,或是其他类似的帖子,那将是非常值得赞赏的。 < P>理想的是,我喜欢上面的类名,中间的3个成员列表和底部的按钮。
您可以使用BorderLayout来实现它。以下代码段可能有助于您入门:
setLayout(new BorderLayout());
//now add 3 panel as containers for top, center and bottom content
JPanel top = new JPanel();
add(top, BorderLayout.NORTH);
JPanel center = new JPanel();
add(center, BorderLayout.CENTER);
JPanel bottom = new JPanel();
add(bottom, BorderLayout.SOUTH);
//manage layout and add content to top container
top.setLayout(new FlowLayout());//actually it the default
top.add(new JLabel("Class Name:"));
JTextField className = new JTextField(10);
top.add(className);
top.add(new JLabel("Super Class Name:"));
JTextField superName = new JTextField(10);
top.add(superName);
//todo manage layout and add content to center container
//todo manage layout and add content to bottom container
使用布局管理器,就像使用JFrame或JPanel一样。@KevinAnderson答案的简单性说明了我知道多少Java GUI。我搜索了java layout manager,它看起来正是我所需要的,谢谢你的提示。不过,我不知道在哪里可以将您的答案标记为最佳答案。请发布复制您的问题的完整代码。一种方法是,首先了解您要作为草图开发的GUI,然后使用Swing将其构建为GUI。以下是Oracle的Java教程:。查看使用组件和在容器中布局组件的主题。但我不认为在哪里将您的答案标记为最佳答案。-你只能接受最好的答案。这只是一个评论,所以你不能接受。所有的元素都在一条水平线上-面板的默认布局管理器是FlowLayout,因此它们显示在一条线上。有关更多信息和工作示例,请查看上的Swing教程。另外,请注意,您可以嵌套可以使用不同布局管理器的面板。