JFrame不绘制矩形

时间:2013-12-16 20:21:16

标签: java swing graphics paint

有一个我以前没有遇到的非常简单的问题。在做项目之前我使用了类似的布局。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class q1
{
    public static void main (String Args [])
    {
        q1Window showMe = new q1Window();
    }
}

class q1Window
{
    q1Window()
    {
        JFrame window = new JFrame("Tutorial 1");
        window.setSize(600,600);
        window.setVisible(true);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void paint (Graphics back)
    {
        back.setColor(Color.black);
        back.fillRect(30,30,100,200);           
    }
}

现在我似乎无法打印任何JFrame显示的内容。

2 个答案:

答案 0 :(得分:5)

您不能只将paint()方法添加到任何类。只有Swing组件才有绘画方法。

阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。

快速摘要是您需要覆盖JPanel的paintComponent()方法,然后将面板添加到框架中。

答案 1 :(得分:-2)

正如camickr指出的那样,你需要一个Swing组件来做你想要的事情,在这种情况下,是要覆盖paint(),尽管你应该覆盖paintComponent()

试试这个:

class q1 {

    public static void main(String Args[]) {
        q1Window showMe = new q1Window();
    }
}

class q1Window extends JFrame {

    q1Window() {
        setTitle("Tutorial 1");
        setSize(600, 600);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void paint(Graphics back) {
        back.setColor(Color.black);
        back.fillRect(30, 30, 100, 200);
    }
}