Java Swing rendering Issue (Empty spaces amp; doubled rendering)(Java Swing呈现问题(空格和双倍呈现))
问题描述
我在使用Java Swing的JFrame/JPanel时遇到了一点呈现问题。 我想在自己身上渲染一条线,所以我已经创建了一个方法来使用Graphics g渲染很多点,并且它工作得非常好(在我的第二台显示器上)。 现在我正在使用我的笔记本电脑主显示器,我收到了一些该死的东西: Rendering Issue
它应该只是一条连续的线,但是它有这些令人讨厌的小缺口,而且它显示了两次……这不会发生在我的另一个(更大的)显示器上,但我想不应该是这样的(它只与一些显示器一起工作)。所以代码没问题(我想),我的监视器也是…你能帮我吗? 感谢回答各位:)
CODE ON PASTEBIN:
https://pastebin.com/kBVSjpCA
https://pastebin.com/svuhSXGw
https://pastebin.com/ftga7v2L
https://pastebin.com/fHtYj35G
https://pastebin.com/zA0N1LqE
推荐答案
Oracle有一个很棒的教程Creating a GUI With Swing。跳过NetBeans部分。本教程中介绍自定义绘图的部分是Performing Custom Painting。
这是我为前面的一个问题匆忙准备的一个秋千绘图示例。
一般思路是创建一个JFrame
并创建一个单独的绘图JPanel
。绘图JPanel
将扩展JPanel
并重写paintComponent
方法。
paintComponent
方法的第一行必须是对super
paintComponent
方法的调用。之后,您可以使用所需的任何Graphics
或Graphics2D
方法。
以下是完整的可运行代码。
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class DrawingPanelExample implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new DrawingPanelExample());
}
@Override
public void run() {
JFrame frame = new JFrame("My Empty Window");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawingPanel panel = new DrawingPanel();
frame.add(panel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public class DrawingPanel extends JPanel {
private static final long serialVersionUID = 1L;
public DrawingPanel() {
this.setPreferredSize(new Dimension(350, 300));
}
@Override
protected void paintComponent(Graphics pen) {
super.paintComponent(pen);
pen.drawRect(50, 50, 20, 20);
pen.drawRect(100, 50, 40, 20);
pen.drawOval(200, 50, 20, 20);
pen.drawOval(250, 50, 40, 20);
pen.drawString("Square", 50, 90);
pen.drawString("Rectangle", 100, 90);
pen.drawString("Circle", 200, 90);
pen.drawString("Oval", 250, 90);
pen.fillRect(50, 100, 20, 20);
pen.fillRect(100, 100, 40, 20);
pen.fillOval(200, 100, 20, 20);
pen.fillOval(250, 100, 40, 20);
pen.drawLine(50, 150, 300, 150);
pen.drawArc(50, 150, 200, 100, 0, 180);
pen.fillArc(100, 175, 200, 75, 90, 45);
}
}
}
这篇关于Java Swing呈现问题(空格和双倍呈现)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java Swing呈现问题(空格和双倍呈现)
基础教程推荐
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01