簡體   English   中英

使用paintComponent()在JFrame中繪制矩形

[英]Using paintComponent() to draw rectangle in JFrame

我正在嘗試使用JPanel的paintComponent()創建一個繪制形狀的程序(下面的例子中的一個矩形),但我無法讓它工作,也無法發現錯誤。

代碼如下:

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

public class RandomRec{
    JFrame frame;

    public void go(){
        frame = new JFrame();
        frame.setSize(500,500);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        DrawPanel panel = new DrawPanel();
    }

    public static void main (String[] args){
        class DrawPanel extends JPanel{
           public void paintComponent(Graphics g) {
              super.paintComponent(g);
              g.setColor(Color.orange);
              g.drawRect(20, 20, 100, 60);
           }
        }

        RandomRec test = new RandomRec();
        test.go();
    }
}

任何有關這方面的幫助將非常感激。

謝謝。

* 更新 *問題解決了! 將go()方法移出main方法,添加一個frame.add(面板)並將frame.setVisible(true)移動到go()方法的底部(更具體地說,在添加面板后移動它)框架)已對問題進行了排序。 謝謝。

您的類DrawPanel僅限於main方法的范圍,並且對您的構造函數不可見。

您需要將DrawPanel移出main方法,然后將其添加到JFrame

frame.add(panel);

此外,最好在添加所有組件后調用frame.setVisible(true)

你從未真正將面板添加到框架中,因此它永遠不可見。 你需要類似的東西

frame.getContentPane().add( panel );

為什么要在main方法中定義drawpanel類? 這很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM