1

我知道以前有人问过这个问题,但没有答案。

在 Java 中,当我向框架添加组件时,在应用程序初始化时,添加 JTextField 后的所有元素都不会呈现。它们在您刷新屏幕后呈现,例如最小化和最大化屏幕。以下仅呈现文本字段。它看起来像一些 Java 渲染问题。

我的代码如下:

private void initialize() {
    frame = new JFrame();
    frame.setVisible(true);
    frame.setBounds(100, 100, 569, 321);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    txtGenerationRate = new JTextField();
    txtGenerationRate.setBounds(322, 29, 86, 20);
    frame.getContentPane().add(txtGenerationRate);
    txtGenerationRate.setColumns(10);

    lblAmountOfSolarPanelsText = new JLabel("Amount of solar panels:");
    lblAmountOfSolarPanelsText.setBounds(10, 57, 159, 14);
    frame.getContentPane().add(lblAmountOfSolarPanelsText);

    frame.setVisible(true); // added it for the second time, just to make sure
}

有人可以帮忙吗?

彼得

4

4 回答 4

2

首先,您绝对应该阅读有关如何使用布局的信息:http: //docs.oracle.com/javase/tutorial/uiswing/layout/using.html

第二件事,您应该在添加所有组件后将框架设置为可见,如果不这样做,则必须调用 repaint()。

于 2013-01-31T16:06:54.667 回答
1

试着把它放在初始化方法的底部

frame.setVisible(true);
frame.setBounds(100, 100, 569, 321);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
于 2013-01-31T16:02:07.797 回答
0

你也可以frame.revalidate();尝试frame.repaint();

于 2013-01-31T16:05:20.680 回答
0

这似乎对我有用,当窗口首次出现时,我会同时看到标签和文本字段。标签文本不适合标签,因此被截断,但除此之外一切看起来都符合预期。也许在尝试简化代码时已从代码中删除了错误的片段?

在此处输入图像描述

于 2013-01-31T16:06:54.703 回答