所以我有两个类,一个负责创建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而没有任何运气。
答案 0 :(得分:2)
您没有将面板添加到框架中,请尝试:
frame.add(this);
在PokerTable构造函数中
答案 1 :(得分:0)
您需要将面板添加到框架,否则面板将永远不会重新绘制。
frame.add(panel) or frame.add(this)
是您需要根据自己的位置进行调用的方式。
此外,您应该重写paintComponent,而不是直接绘制。这不会导致您的代码失败,但这是不好的做法。