[英]Paint does not get added to JPanel
所以我有兩個類,一個負責創建JPanel並且還覆蓋paint。 另一個包含main並使用其他類。 為了方便起見,我已經刪除了不涉及圖形的內容。 第一個是JPanel和繪畫。 第二是主要的。 我為任何糟糕的結構或混亂道歉,我是相對新的,我只是扔東西看看什么有效。 油漆中的東西只是一種測試,它不是主要目標。
public class PokerTable extends JPanel {
private static final int WIDTH = 800;
private static final int HEIGHT = WIDTH * 3 / 4;
private static final String NAME = "Test";
private JFrame frame = new JFrame(NAME);
public PokerTable() {
//frame.setMinimumSize(new Dimension(WIDTH,HEIGHT));
//frame.setMaximumSize(new Dimension(WIDTH,HEIGHT));
frame.setPreferredSize(new Dimension(WIDTH,HEIGHT));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setBackground(Color.GREEN);
g2d.setColor(Color.RED);
g2d.fillOval(0, 0, 30, 30);
}
}
下一個不僅僅是調用PokerTable,而是因為他們依賴其他類而只是打印到控制台,因此我將其他部分留下了。
public class Poker{
public static void main(String[]args) {
System.out.println("hello");
PokerTable pt = new PokerTable();
pt.repaint();
}
並不是說我必須期望它能夠工作,我已經將PokerTable的擴展名改為Canvas和JFrame而沒有任何運氣。
您沒有將面板添加到框架中,請嘗試:
frame.add(this);
在PokerTable構造函數中
您需要將面板添加到框架,否則面板將永遠不會重新繪制。
frame.add(panel) or frame.add(this)
是你需要打電話取決於你在哪里。
此外,您應該重寫paintComponent,而不是直接繪制。 這不會導致您的代碼失敗,但這是不好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.