在创建JFrame并向其添加文本时遇到问题

时间:2016-08-24 01:08:05

标签: java jframe

我一直在尝试使用文本设置JFrame但我遇到了麻烦。我可以创建JFrame,但我无法获得背景颜色或文本来使用它。

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class FundManager {

    JFrame window;
    JPanel panel;
    JLabel text;

    public void createWindow()
    {

        //Create the window
        window = new JFrame();
        window.setVisible(true);
        window.setSize(960, 540);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setLocationRelativeTo(null);

        //Create the panel
        panel = new JPanel();
        panel.setBackground(Color.RED);

        //Create the label
        text = new JLabel("test");

    }

    public static void main(String args[]) {

        FundManager.createWindow();

    }

}

我的createWindow()方法未运行,我收到错误:

  

无法对非静态方法进行静态引用。

但是,当我将其设为静态时,整个程序就会中断。

2 个答案:

答案 0 :(得分:2)

这里的问题是你需要一个FundManager实例才能调用createWindow()方法。请尝试下面的代码。

new FundManager().createWindow();

答案 1 :(得分:2)

首先,您无法调用FundManager.createWindow(),因为createWindow()不是静态方法。你需要一个FundManager实例。

此外,您不是将面板和文本字段添加到框架中。你只是宣布他们。这是一个快速示例,说明如何在框架内找到元素:

JFrame window;
JPanel panel;
JLabel text;

public void createWindow() {

    // Create the window
    window = new JFrame();
    window.setVisible(true);
    window.setSize(960, 540);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setLocationRelativeTo(null);

    // Create the panel
    panel = new JPanel();
    panel.setPreferredSize(new Dimension(500, 500));
    panel.setBackground(Color.RED);

    // Create the label
    text = new JLabel("test");
    text.setPreferredSize(new Dimension(200, 30));
    text.setLocation(100, 100);
    panel.add(text);

    window.getContentPane().add(panel);
    window.pack();

}

用以下方式运行:

new FundManager().createWindow();