我正在类MyCanvas.java
内执行所有Graphics
内容,例如g.drawLine()
等
public class MyCanvas extends JComponent{
public void paint(Graphics g){...}
}
我的 Main.java
类是
class Main{
public static void main(String[] args){
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(30, 30, 1000, 350);
window.getContentPane().setLayout(new FlowLayout());
MyCanvas mc = new MyCanvas();
JScrollPane jsp = new JScrollPane(mc);
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
window.getContentPane().add(jsp);
window.getContentPane().setBackground(Color.WHITE);
window.setVisible(true);
}
}
但是,JFrame 仅显示白色纯背景,它不显示 paint(Graphics g)
中的任何 Graphics
内容。
请注意,如果我从上面的 Main.java
中删除 JScrollPane
,那么它会完美地显示所有内容。
class Main{
public static void main(String[] args){
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(30, 30, 1000, 350);
window.getContentPane().add(new MyCanvas());
window.getContentPane().setBackground(Color.WHITE);
window.setVisible(true);
}
}
我的逻辑哪里出了问题?添加 JScrollPane
时有什么问题吗?请帮忙。谢谢。
最佳答案
class MyCanvas extends JComponent{
public void paint(Graphics g){...}
}
应该是:
class MyCanvas extends JComponent{
@Override
public void paintComponent(Graphics g){...}
}
通过使用paintComponent
,我们尊重绘画链。另外,请务必添加 super.paintComponent(g);
作为重写方法中的第一个语句,以确保绘制 BG 颜色和边框等。
关于java - 无法看到 Paint() 方法中的图形内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23191116/