【问题标题】:JFrame partly transparentJFrame 部分透明
【发布时间】:2014-12-13 12:30:41
【问题描述】:

我正在分析图表中最短和最简单方式之间的差异。为了使它更容易,我创建了一个非常简单的 JFrame 用于可视化图形和方式。正如您在图片中看到的,背景似乎是部分透明的。我不知道原因。

http://postimg.org/image/p1axfhj9h/(对不起,我还不能上传图片)

画法有问题吗?这个问题只发生在我的私人笔记本电脑上。我正在使用 java 1.7.0_45

我没有对背景颜色或透明度进行任何更改。绘制方法只是绘制字符串、椭圆和线条。

public Drucker(Graph graph) {
    super();
    this.graph = graph;
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}


@Override
public void paint(Graphics g) {

    for (int i = 0; i < this.graph.getKanten().size(); i++) {
        xxx
    }

    for (int i = 0; i < this.graph.getKnoten().size(); i++) {
        xxx
    }       

    this.paintDistance(g);
}

我的 java 版本有问题吗? 我在家里有人可以帮助我。

感谢和问候

【问题讨论】:

    标签: java swing jframe


    【解决方案1】:

    我认为你需要 super construct 你的 paint() 方法。

    这只是意味着写这个:

    @Override
    public void paint(Graphics g) {
        super.paint(g);
    
        // your code goes here
    }
    

    当你超级构造方法时,这基本上意味着你将绘制父对象然后绘制字符串。

    这只是一种预感。如果这确实可以解决您的问题,请告诉我。

    【讨论】:

    • 这是一个很好的预感,我也会担心 OP 首先会覆盖paint,但也可能会覆盖顶级容器的paint
    • 你是对的。这就是问题所在。也许我无意中删除了这条线。谢谢你,祝你有美好的一天。
    • 使用super() 表示法调用超级构造函数与使用super.foo() 表示法调用超级方法不同。后者与在对象上构造无关。
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多