java - 为什么我的 JFrame 的内容显示不正确?

标签 java swing jframe

为了代码少,我去掉了与问题无关的代码,比如addActionListener();

我的主类是public class TF2_Account_Chief

我有我的主要 Jframe f; 及其内容:

private static JFrame f = new JFrame("TF2 Account C.H.I.E.F.");
private JLabel runnableTogetherLabel = new JLabel("How many idlers would you like to run at a time?");
private static JTextField runnableTogetherInput = new JTextField();
private JButton runButton = new JButton("Run!");
private JButton stopButton = new JButton("Stop!");
private JButton resetButton = new JButton("Reset!");
private JButton exitButton = new JButton("Exit!");

然后我设置了所有内容的属性:

    public void launchFrame() {
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
        f.add(runnableTogetherInput);
        f.add(runnableTogetherLabel);
        f.add(runButton);
        f.add(stopButton);
        f.add(resetButton);
        f.add(exitButton);
        f.setSize(625, 500);
        runnableTogetherInput.setSize(35, 20);
        runnableTogetherLabel.setSize(275, 25);
        runButton.setSize(60, 25);
        stopButton.setSize(65, 25);
        resetButton.setSize(70, 25);
        exitButton.setSize(60, 25);
        f.setLocation(0, 0);
        runnableTogetherInput.setLocation(285, 3);
        runnableTogetherLabel.setLocation(5, 0);
        runButton.setLocation(330, 0);
        stopButton.setLocation(395, 0);
        resetButton.setLocation(465, 0);
        exitButton.setLocation(540, 0);
    }

然后我有我的 main() 方法:

public static void main(String[] args) throws IOException {
    TF2_Account_Chief gui = new TF2_Account_Chief();
    gui.launchFrame();
    Container contentPane = f.getContentPane();
    contentPane.add(new TF2_Account_Chief());
}

然后我的第二个 JFrame iF 没有正确显示内容:

private void invalidInput() {
    JFrame iF = new JFrame("Invalid Input!");
    JLabel iL = new JLabel("The input you have entered is invalid!");
    JButton iB = new JButton("Exit!");
    Container contentPane2 = iF.getContentPane();
    contentPane2.add(new TF2_Account_Chief());
    iF.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    iF.pack();
    iF.setVisible(true);
    iF.add(iL);
    iF.add(iB);
    iF.setSize(500, 300);
    iL.setSize(125, 25);
    iB.setSize(60, 25);
    iF.setLocation(0, 0);
    iL.setLocation(0, 15);
    iB.setLocation(0, 45);
}

现在,JFrame iFinvalidInput() 方法被调用时启动,但您看不到它,因为那部分代码与问题无关.重要的是 JFrame iF 已启动。

新框架看起来像这样:JFrame iF

关于为什么内容不能正确显示的任何想法?

(不恰当的,我的意思是 JButton iB 占据了整个框架,框架是浅蓝色而不是正常的灰色。)

最佳答案

您正在使用绝对位置而不使用 null 布局,这就是您看到大按钮的原因。

要查看每个组件,您必须使用

iF.setLayout(null);

但是这不是一个好的做法,我建议你学习how to use Layouts并将所有工作留给布局管理器

关于java - 为什么我的 JFrame 的内容显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17487139/

相关文章:

java - 在有状态处理中,您应该如何处理由于从未达到缓冲区大小而未处理的数据?

java - 如何在递归中使用索引变量?

Swing 工具提示的 Java3D 卡顿问题

java - 使用 JLabels 更新图像的正确方法

java - JFrame 中的 JPanel 在 JFrame 的菜单之上绘制

java - 为什么 getRemoteHost() 在部署应用程序时返回 IP 地址?

java - Apache poi : saving jtable to a file

java - 获取 JScrollPane 中包含的 JList

java - JButtons 未显示在 JFrame 上的 JPanel 上

java - Android WebView 在转动智能手机时加载起始页