在程序启动时绘制图形;从未调用过 PaintComponent
Draw Graphics on program start; PaintComponent never called
这似乎是个简单的问题,但不知何故我无法 google 找到答案。教程似乎略过开头,我看不出他们的程序与我的程序有何不同。我想做的就是创建一个 JPanel 并使用图形 class 在程序启动时在上面画东西。
我创建了一个超级简化版本的程序,但它也不起作用:
public class Thing
{
public static void main(String[] args)
{
JFrame mainFrame = new JFrame("Test");
mainFrame.setResizable(false);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OtherThing panel = new OtherThing();
mainFrame.getContentPane().add(panel);
mainFrame.pack();
mainFrame.setVisible(true);
}
}
public class OtherThing extends JPanel
{
public OtherThing()
{
setBackground(Color.black);
setPreferredSize(new Dimension(400,400));
repaint();
}
public void PaintComponent(Graphics g)
{
super.paintComponents(g);
setBackground(Color.red);
setForeground(Color.red);
System.out.println("start");
g.drawOval(0,0,50,50);
g.drawLine(0,0 , 100, 100);
g.drawString("This is my custom Panel!",10,20);
System.out.println("After");
}
}
Sytem.out.println 永远不会打印出来。 PaintComponent 永远不会被调用。在我看过的一些教程中,它们听起来就像重绘调用 paintcomponent 一样简单,但在我的程序中 paintcomponent 从未被调用。
我只想在启动时绘制图形。
Java 是键敏感的。
public void PaintComponent(Graphics g)
必须是
public void paintComponent(Graphics g)
这似乎是个简单的问题,但不知何故我无法 google 找到答案。教程似乎略过开头,我看不出他们的程序与我的程序有何不同。我想做的就是创建一个 JPanel 并使用图形 class 在程序启动时在上面画东西。
我创建了一个超级简化版本的程序,但它也不起作用:
public class Thing
{
public static void main(String[] args)
{
JFrame mainFrame = new JFrame("Test");
mainFrame.setResizable(false);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OtherThing panel = new OtherThing();
mainFrame.getContentPane().add(panel);
mainFrame.pack();
mainFrame.setVisible(true);
}
}
public class OtherThing extends JPanel
{
public OtherThing()
{
setBackground(Color.black);
setPreferredSize(new Dimension(400,400));
repaint();
}
public void PaintComponent(Graphics g)
{
super.paintComponents(g);
setBackground(Color.red);
setForeground(Color.red);
System.out.println("start");
g.drawOval(0,0,50,50);
g.drawLine(0,0 , 100, 100);
g.drawString("This is my custom Panel!",10,20);
System.out.println("After");
}
}
Sytem.out.println 永远不会打印出来。 PaintComponent 永远不会被调用。在我看过的一些教程中,它们听起来就像重绘调用 paintcomponent 一样简单,但在我的程序中 paintcomponent 从未被调用。
我只想在启动时绘制图形。
Java 是键敏感的。
public void PaintComponent(Graphics g)
必须是
public void paintComponent(Graphics g)