添加JTextfield后,Java无法呈现组件

时间:2013-01-31 15:56:08

标签: java swing jframe jlabel jtextfield

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

在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 个答案:

答案 0 :(得分:2)

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

第二件事,你应该在添加所有组件后设置你的框架,如果你没有,你必须调用repaint()。

答案 1 :(得分:1)

尝试将其放在initialize方法的底部

frame.setVisible(true);
frame.setBounds(100, 100, 569, 321);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

答案 2 :(得分:0)

您还可以尝试frame.revalidate();frame.repaint();

答案 3 :(得分:0)

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

enter image description here