gpt4 book ai didi

java - 无法看到 Paint() 方法中的图形内容

转载 作者:行者123 更新时间:2023-12-02 05:54:57 26 4
gpt4 key购买 nike

我正在类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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com