gpt4 book ai didi

java - 无法将 JTextfield 添加到 JTabbedPane 中的 JPanel

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:33 25 4
gpt4 key购买 nike

我正在尝试使用 Swing 制作一个基本的 UI。我想要一个带有多个选项卡的 JTabbedPaneJFrame。如果我只用 JTextField 制作 1 个 JPanel 它工作正常,但是一旦我想添加另一个 JPanelJTextField 它什么也没显示。我在这里做错了什么?

这是一个简单的例子:

import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;

public class SwingUI {

private final JFrame frame;
private final JTabbedPane tabbedPane;

public SwingUI(){

frame = new JFrame("Test");
frame.setSize(1000, 1000);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new GridLayout(1, 1));

tabbedPane = new JTabbedPane();
tabbedPane.addTab("Login", makeLoginPanel());
tabbedPane.addTab("Login2", makeLoginPanel()); //if this is left out it works
frame.getContentPane().add(tabbedPane);

}

private JPanel makeLoginPanel(){
JPanel p = new JPanel();
p.setLayout(null);

JLabel lblName = new JLabel("Name:");
lblName.setBounds(50,50,100,30);
p.add(lblName);

JTextField x = new JTextField("text");
x.setBounds(200,200,200,200);
p.add(x);

return p;
}
}

最佳答案

在将组件添加到框架后,框架应该可见。

所以:

frame.setVisible( true );

应该是构造函数中的最后一条语句。

还有:

frame.setSize(1000, 1000);

不要硬编码大小。您不知道其他人可能使用的是什么分辨率。

改为使用:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

框架将在您的屏幕上最大化打开。

此外,

frame.getContentPane().setLayout(new GridLayout(1, 1));

不要使用 GridLayout。默认布局是 BorderLayout,默认情况下它允许您将组件添加到 CENTER,并且该组件将填充框架的整个空间。

关于java - 无法将 JTextfield 添加到 JTabbedPane 中的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54162265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com