JavaSwing:格式化对话框中的内容

JavaSwing:格式化对话框中的内容,java,swing,jpanel,jdialog,Java,Swing,Jpanel,Jdialog,我在试图格式化对话框中的JComponent位置时遇到了一些问题。我觉得这是一个已经有答案的问题,但我在寻找信息时遇到了一些问题 我尝试在元素上使用setLocation,使用自定义的JOptionPane/JDialog,但不确定是否正确,但它们总是忽略位置的格式。所有的元素都在一条水平线上 理想情况下,我喜欢上面的类名,中间的3个成员列表和底部的按钮。 我正在创建这样的对话框: JPanel createClass = new NewClass(); int result = JOption

我在试图格式化对话框中的JComponent位置时遇到了一些问题。我觉得这是一个已经有答案的问题,但我在寻找信息时遇到了一些问题

我尝试在元素上使用setLocation,使用自定义的JOptionPane/JDialog,但不确定是否正确,但它们总是忽略位置的格式。所有的元素都在一条水平线上

理想情况下,我喜欢上面的类名,中间的3个成员列表和底部的按钮。 我正在创建这样的对话框:

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教程。另外,请注意,您可以嵌套可以使用不同布局管理器的面板。