簡體   English   中英

Paint不會添加到JPanel

[英]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.

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