2

我知道一些 java,但我对任何类型的 GUI 开发都是新手。我所做的大部分事情都是通过终端运行的小程序。

无论哪种情况,当我试图弄湿我的脚时,我发现自己陷入了以下代码:

public class MyGui {

   public static void main(String[] args) {
      JFrame frame = new JFrame("My Frame");
      JPanel leftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
      JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));

      JTextArea userField = new JTextArea("User:");
      userField.setEditable(false);

      JTextArea user = new JTextArea("myuser");
      user.setEditable(true);

      leftPanel.add(userField);
      centerPanel.add(user);

      frame.getContentPane().add(leftPanel);
      frame.getContentPane().add(centerPanel);
      frame.setVisible(true);
      frame.setSize(500, 500);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

我基本上想要一个表格窗口,左侧有字段,右侧有它们的值。如何才能做到这一点?

我当前的输出就myuser在我的窗口的中心。

4

2 回答 2

2

你不需要两个面板。一个 GridLayout 就足够了:

public static void main(String [] args) {
        JFrame frame = new JFrame("My Frame");
          JPanel panel = new JPanel(new GridLayout(1,2)); // split the panel in 1 rows and 2 cols


          JTextArea userField = new JTextArea("User:");
          userField.setEditable(false);

          JTextArea user = new JTextArea("myuser");
          user.setEditable(true);

          panel.add(userField);
          panel.add(user);

          frame.getContentPane().add(panel);

          frame.setVisible(true);
          frame.setSize(500, 500);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
于 2013-07-09T14:46:36.770 回答
2

您的输出将是您添加到容器的最后一个面板,因为默认布局JFrameBorderLayout

因此,getContentPane().add(panel) 将面板添加到 CENTER。另请参阅为什么我的 JFrame 的内容无法正确显示?

您问题的第二部分没有指定使用哪种方式,您可以使用GridLayout到框架或主面板并将面板添加到容器中,同样,还有其他方法。

希望您阅读更多有关LayoutManagers的内容以深入了解。

于 2013-07-09T14:46:44.317 回答