Java 文本字段宽度不小于';网格布局不会改变
我正在尝试将textfield放在标签旁边。而不是文本字段放置在标签下并填充一行。我试着给像JTextfield(10)这样的专栏文章,但效果不太好。这是关于我使用的布局吗Java 文本字段宽度不小于';网格布局不会改变,java,swing,jtextfield,Java,Swing,Jtextfield,我正在尝试将textfield放在标签旁边。而不是文本字段放置在标签下并填充一行。我试着给像JTextfield(10)这样的专栏文章,但效果不太好。这是关于我使用的布局吗 public class guessTheNumber extends JFrame{ private JLabel info, info2, info3; private JTextField input; public guessTheNumber(){ super("Guessing Game");
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);
}
}
我很惊讶将初始化更改为
GridLayout(6,4)
不起作用
如果希望同时显示info3
和input
,可以尝试以下摘录:
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);
尝试使用
JPanel
。也就是说,将JPanel
添加到JFrame
中,然后设置JPanel的布局管理器。你知道,
JPanel jp = new JPanel();
add(jp);
jp.setLayout(new GridLayout(6,3));
请记住,现在必须将标签和文本字段添加到面板中,而不是JFrame那么,为什么要使用6×3的网格布局呢?你的JFrame中有18个元素吗?程序还没有完成。我将使用18个元素。它与我的问题有什么关系?对于网格布局,它将用3个标签填充第一行。第二行是第一列位置的JTextField。这将是6行x 3列网格布局的预期行为。尝试将其更改为
newgridlayout(6,4)
一秒钟,你会看到标签旁边的文本字段,哎呀,没有看到。尝试使用JPanel
。也就是说,将JPanel添加到JFrame中,然后设置JPanel的布局管理器。你知道,JPanel-jp=newjpanel();加(jp);;jp.setLayout(新GridLayout(6,3));代码>请记住,现在必须将标签和文本字段添加到面板中,而不是JFramePanel。谢谢!如果(从评论中可以看出)这有助于您找到解决方案,请回答这个问题。