【问题标题】:Paint does not get added to JPanel油漆未添加到 JPanel
【发布时间】:2014-03-14 10:36:54
【问题描述】:

所以我有两个类,一个负责创建 JPanel 并覆盖绘制。另一个包含主要并使用这个其他类。为了方便起见,我删除了图形中不涉及的内容。第一个是 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,但没有任何运气。

【问题讨论】:

    标签: java swing layout jpanel repaint


    【解决方案1】:

    您没有将面板添加到框架中,请尝试:

    frame.add(this);
    

    在 PokerTable 构造函数中

    【讨论】:

    • 非常感谢。这以前有效,但后来我做了很多改变。我不知道它以前是如何工作的,但现在看来它工作得很好。我知道这个问题太简单了,我可能看得太难了。
    【解决方案2】:

    您需要将面板添加到框架中,否则面板将永远不会重新绘制。

    frame.add(panel) or frame.add(this) 
    

    是您需要调用的内容,具体取决于您在哪里进行。

    另外,你应该重写paintComponent,并且永远不要直接绘制。这不会导致您的代码失败,但这是不好的做法。

    【讨论】:

    • 我会牢记paintComponent。我最初拥有它,但将其更改为将所有东西都扔到墙上看它是否会粘住的一部分。现在我必须问,在这种特殊情况下使用 JPanel 是否也很糟糕?我可能会使用图像和 JButton,g2d 没有绘制任何内容。我还没有完全确定 swing 和 awt 的差异。
    猜你喜欢
    • 2013-06-05
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多