0

我正在尝试将文本字段放在标签旁边。而不是该文本字段位于标签下方并填充一行。我试图给像 JTextfield(10) 这样的列,但这也没有用。这是关于我正在使用的布局吗?

public class guessTheNumber extends JFrame{

private JLabel info, info2, info3;
private JTextField input;

public guessTheNumber(){

    super("Guessing Game");
    setLayout(new GridLayout(6,3));

    info = new JLabel("I have a number between 1 and 1000.",SwingConstants.CENTER);
    add(info);

    info2 = new JLabel("Can you guess my number?",SwingConstants.CENTER);
    add(info2);

    info3 = new JLabel("Please enter your first guess:");
    add(info3);

    input = new JTextField("",10);
    add(input);

}
public static void main(String[] args) {

    guessTheNumber gtn = new guessTheNumber();
    gtn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gtn.setLocationRelativeTo(null);
    gtn.setSize(500, 200);
    gtn.setVisible(true);
}
}
4

2 回答 2

1

尝试使用JPanel. 也就是在JPanel的布局管理器中添加JPanelJFrame然后设置。你知道,

JPanel jp = new JPanel();
add(jp); 
jp.setLayout(new GridLayout(6,3));

请记住,您现在必须将标签和文本字段添加到面板而不是 JFrame

于 2013-01-15T18:29:00.927 回答
0

我很惊讶将初始化更改为GridLayout(6,4)不起作用。

如果您想info3input一起显示,您可以尝试以下摘录:

info3 = new JLabel("Please enter your first guess:");
input = new JTextField("",10);

// Combine both components in a sub-container
JPanel containerPanel = new JPanel();
containerPanel.add(info3);    
containerPanel.add(input);

// Add the container to the guessTheNumber
add(containerPanel);
于 2013-01-15T18:08:21.987 回答