![](/img/trans.png)
[英]Can not draw using paintComponent if added to Jpanel but works fine in 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.