java – 具有多个图层的JFrame
发布时间:2020-12-15 04:52:22 所属栏目:Java 来源:网络整理
导读:我有一个有两层的窗口:静态背景和包含移动对象的前景.我的想法是只绘制一次背景(因为它不会改变),所以我将更改面板透明并将其添加到静态背景之上.这是以下代码: public static void main(String[] args) { JPanel changingPanel = new JPanel() { @Overrid
我有一个有两层的窗口:静态背景和包含移动对象的前景.我的想法是只绘制一次背景(因为它不会改变),所以我将更改面板透明并将其添加到静态背景之上.这是以下代码:
public static void main(String[] args) { JPanel changingPanel = new JPanel() { @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.fillRect(100,100,100); } }; changingPanel.setOpaque(false); JPanel staticPanel = new JPanel(); staticPanel.setBackground(Color.BLUE); staticPanel.setLayout(new BorderLayout()); staticPanel.add(changingPanel); JFrame frame = new JFrame(); frame.add(staticPanel); frame.setSize(800,600); frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } 这段代码为我提供了我想要的正确图像,但每次重新绘制changingPanel时,staticPanel也会重新绘制(这显然违背了仅绘制静态面板一次的整个想法).有人能告诉我什么是错的吗? 仅供参考我使用javax.swing.Timer每秒24次重新计算和重新绘制更改面板. 解决方法
当您将透明组件重新绘制在另一个组件上方时,您仍然会“弄脏”下方组件,导致它被重新绘制.如果您没有重新绘制下层,则会在其上方获得图像的拖尾效果.
此处唯一可用的优化不是重新生成较低级别上使用的图像.每次上面的图层更改时,仍然需要将光栅绘制到图形缓冲区. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 无法将void转换为java.lang.Void
- 详解Java数据结构和算法(有序数组和二分查找)
- JSP Request.getRemoteAddr()方法:获取请求客户端的IP地址
- java – Eclipse Google -App -Engine“不会增强”
- 基于javaWeb 项目SSM配置要点及可能遇到的问题和解决方法
- java – 跨面板对齐Swing组件
- java – 从Play中生成的getter和setter获得好处!骨架
- java – 无法使用getApplication方法强制转换为Application
- 简单的大陆检验身份证(udf)
- PDF Spec与Acrobat创建(QuadPoints)