2015-10-13 46 views
0

我对JPanel并不是很熟悉,有点卡在一件事情上。 我想知道如何在第二行创建第二个JTextfield。 它们看起来在同一行上。第二行的Java Swing多输入第二个JTextField

import javax.swing.*; 

public class JOptionPaneMultiInput { 
    public static void main(String[] args) { 
     JTextField xField = new JTextField(5); 
     JTextField yField = new JTextField(5); 

     JPanel myPanel = new JPanel(); 
     myPanel.add(new JLabel("x:")); 
     myPanel.add(xField); 
     myPanel.add(new JLabel("y:")); 
     myPanel.add(yField); 

     int result = JOptionPane.showConfirmDialog(null, myPanel, 
      "Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION); 
     } 
    } 
+3

首先,您应该学习java中的布局管理器https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html – Satya

+1

提供ASCII图形或简单的GUI *布局图。看起来你想要一排标签/值对。这可以使用'GridBagLayout'或'GroupLayout'实现最好 - 这是一个[使用'GroupLayout']的示例(http://stackoverflow.com/a/21659516/418556)。虽然我也使用嵌套面板创建了效果(在BorderLayout中有两个'GridLayout'面板).. –

+0

BTW - 'JTextField xField = new JTextField(5);'考虑使用带有'SpinnerNumberModel'的'JSpinner'相反 - 用户更喜欢选择数字。 –

回答

3

这是java中布局的问题。在这种情况下,您应该使用GridLayout。也许你最好在java中研究一下布局。

现在这是很好的在你的例子来测试GridLayout

public class JOptionPaneMultiInput { 
    public static void main(String[] args) { 
     JTextField xField = new JTextField(5); 
     JTextField yField = new JTextField(5); 

     JPanel myPanel = new JPanel(new GridLayout(2, 2)); 
     myPanel.add(new JLabel("x:")); 
     myPanel.add(xField); 
     myPanel.add(new JLabel("y:")); 
     myPanel.add(yField); 

     int result = JOptionPane.showConfirmDialog(null, myPanel, 
       "Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION); 
    } 
} 

但对于挥杆更复杂的图形用户界面的设计,请参阅GridBagLayoutGroupLayout。在现实世界的应用程序中,大多数情况下您可以使用多个布局。

祝你好运。

+0

尽管'GridLayout'可能没有像您提到的其他建议那样吸引最终效果,但它确实是实现多行要求的最简单方法。 :) –

+1

一如既往,你是对的@Andrew Thompson ;-) – STaefi

+0

*“一如既往,你是对的”*哈哈!我希望它是(总是)真实的。 ;) –