javajapplet呈现问题

javajapplet呈现问题,java,swing,paintcomponent,japplet,Java,Swing,Paintcomponent,Japplet,我和JApplet有问题。代码运行得很好,但当我将其从JFrame转换为JApplet时,渲染部分停止正常工作。基本上我想做的是简单化的绘图应用程序。启动小程序时,有一半的时间repaint()不起作用(没有灰色背景;您必须将鼠标放在按钮上,以更新其颜色等),此外,像素渲染部分根本不显示。代码如下: 框架类(JApplet) package; 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Graphics; 导入java.awt.Gr

我和JApplet有问题。代码运行得很好,但当我将其从JFrame转换为JApplet时,渲染部分停止正常工作。基本上我想做的是简单化的绘图应用程序。启动小程序时,有一半的时间repaint()不起作用(没有灰色背景;您必须将鼠标放在按钮上,以更新其颜色等),此外,像素渲染部分根本不显示。代码如下:

框架类(JApplet)

package;
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Toolkit;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.util.ArrayList;
导入javax.swing.JApplet;
导入javax.swing.JButton;
导入javax.swing.JColorChooser;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.Timer;
公共类框架扩展了JApplet{
公共JPanel小组;
专用按钮加、减、按钮颜色;
私有整数缩放;
私人JLabel标签秤;
私有最终计时器更新程序;
私有静态布尔绘制=false;
公共静态色彩;
公共静态int模式=0;
//0=绘制;1=设置颜色;2=擦除
私有数组列表像素数组;
公共框架(){
pixelArray=新的ArrayList();

for(inti=1;iJava小程序为我们提供了这些方法

[这里]

方法

public void paint(Graphics g){}
被用作

public void paintComponent(Graphics g){}

关于swing。

作为黑暗中的刺刀,不要在
图形
上下文中调用
图形#dipose

除了
图形
上下文是一个共享资源,在给定的绘制周期内可能需要绘制的所有组件都使用它之外,它还可以防止绘制到它的内容在某些平台上显示


在15年的专业发展中,我从来没有理由调用
Toolkit.getDefaultToolkit().sync();
。我怀疑这会有这么大的不同,我只是说检查一下执行swing组件自定义绘制的推荐方法。

”。但是当我将它从JFrame转换为JApplet时”为什么你要将它从框架转换成小程序,而不是从链接启动(工作)框架,使用“…进一步删除…”Whoa在上面。所以不是一个“一站式服务台”,而是一个问答网站。说到这里,你的具体问题是什么?为了更快地获得更好的帮助,请发布一个(最简单的完整和可验证的示例)@AndrewThompson这个项目从一开始就被认为是一个小程序,但我首先把它做成了JFrame,因为它更容易测试,而且bug更少。此外,我只想提供证据证明渲染不起作用,我唯一的问题是为什么。不要调用自定义类
Frame
。有一个AWT组件就是这个名称所以这很令人困惑。使用一个更具描述性的名称。没有提到,但我尝试了一切:paint、paintComponent,甚至JApplet内部的paint方法。这并不能解决问题。实际上,你有那种落后。顶级容器,如JApplet,只有一个paint方法,这是一种刻意的,因为大多数顶级容器ners还包含其他组件,如JRootPane、内容通道和可能的玻璃窗格,因此提供PaintComponent方法毫无意义,因为它将被其他内容覆盖。从JComponent扩展而来的组件包括PaintComponent,PaintComponent,它提供了一种可以轻松定制绘画的方法找到了解决方案:MouseInfo.getPointerInfo().getLocation()只是因为某种原因把一切都搞砸了。但是我觉得你的提示很有帮助,因此我会给你最好的答案。不要使用
MouseInfo
,使用
MouseListener
MouseMotionListener
public void paint(Graphics g){}
public void paintComponent(Graphics g){}