Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 网格布局中的JPanel导致透明度问题_Java_Swing_Transparency_Alpha_Grid Layout - Fatal编程技术网

Java 网格布局中的JPanel导致透明度问题

Java 网格布局中的JPanel导致透明度问题,java,swing,transparency,alpha,grid-layout,Java,Swing,Transparency,Alpha,Grid Layout,我是Java新手,我似乎无法用半透明的背景来修复这个bug 每当我更改面板的某些部分时,它都会绘制更改以及窗口的一些随机图片 更清晰的虫子图片 这里有一个完整工作项目的链接,这样您就可以清楚地看到bug了。给我一分钟时间来加载我的服务器太慢了 我制作了这个小版本的bug,这样你就可以进行测试了 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.event.MouseEvent

我是Java新手,我似乎无法用半透明的背景来修复这个bug

每当我更改面板的某些部分时,它都会绘制更改以及窗口的一些随机图片

更清晰的虫子图片


这里有一个完整工作项目的链接,这样您就可以清楚地看到bug了。给我一分钟时间来加载我的服务器太慢了

我制作了这个小版本的bug,这样你就可以进行测试了

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseEvent;

public class Example1 extends JApplet implements MouseListener {


    Container Con = getContentPane();
    JPanel panel1 = new JPanel(new GridLayout(5, 5, 0, 0));
    JPanel[][] panel2 = new JPanel[5][5];
    JLabel[] label = new JLabel[25];
    Color color;
    int count = 0;

    public void init() {

        int col = 0;
        int row = 0;
        color = new Color(0.00f, 0.24f, 0.70f, 0.50f);

        for (int i = 0; i < 25; i++) {
            if (col > 4) {
                col = 0;
                row++;
            }
        label[i] = new JLabel("test");
        label[i].addMouseListener(this);
        panel2[col][row] = new JPanel();
        panel2[col][row].add(label[i]);
        color = new Color(0.00f, 0.24f, 0.70f, 0.20f);
        panel2[col][row].setBackground(color);
        label[i].setBorder(BorderFactory.createLineBorder(Color.red));
        panel1.add(panel2[col][row]);
        color = new Color(0.50f, 0.24f, 0.10f, 0.20f);
        panel1.setBackground(color);
        col++;
        }



        Con.add(panel1);
        panel1.setOpaque(false);
        label[5].setText("test2");
    }


    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mouseClicked(MouseEvent e) {
        label[5].setText("Test 3" + count);
        count++;
    }

    public void mousePressed(MouseEvent e) {  
    }

    public void mouseReleased(MouseEvent e) { 
    }

    public void mouseMoved(MouseEvent e) {
    }

    public void mouseDragged(MouseEvent e) {  
    }
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.awt.event.MouseEvent;
公共类Example1扩展JApplet实现MouseListener{
容器Con=getContentPane();
JPanel PANE1=新JPanel(新网格布局(5、5、0、0));
JPanel[]panel2=新JPanel[5][5];
JLabel[]标签=新的JLabel[25];
颜色;
整数计数=0;
公共void init(){
int col=0;
int行=0;
颜色=新颜色(0.00f、0.24f、0.70f、0.50f);
对于(int i=0;i<25;i++){
如果(列>4){
col=0;
行++;
}
标签[i]=新的JLabel(“测试”);
标签[i].addMouseListener(本);
panel2[col][row]=新的JPanel();
面板2[col][row]。添加(标签[i]);
颜色=新颜色(0.00f、0.24f、0.70f、0.20f);
镶板2[col][row]。收进背景(颜色);
标签[i].setboorder(BorderFactory.createLineBorder(Color.red));
第1组。添加(第2组[列][行]);
颜色=新颜色(0.50f、0.24f、0.10f、0.20f);
面板1.立根背景(颜色);
col++;
}
补充条款(第1组);
面板1.设置不透明(假);
标签[5].setText(“test2”);
}
公共无效鼠标事件(鼠标事件e){
}
公共无效mouseExited(MouseEvent e){
}
公共无效mouseClicked(MouseEvent e){
标签[5].setText(“测试3”+计数);
计数++;
}
公共无效鼠标按下(MouseEvent e){
}
公共无效MouseEvent(MouseEvent e){
}
public void mouseMoved(MouseEvent e){
}
公共无效mouseDragged(MouseEvent e){
}
}

在鼠标单击事件中,添加“重新绘制()

如果不起作用,请尝试使用invalidate()、repaint()命令


1)
。扩展JApplet
为了便于开发/测试,制作一个也可以作为应用程序运行的混合版本。2) 为了更快地获得更好的帮助,请发布一个。生成代码中的图像。这是我的SSCCEE,我做了一个编辑,这样代码现在就可以工作了。如果我使用半透明的.setbackground而不是图像,则错误仍然存在。抱歉,我不知道如何制作一个混合应用程序??为了将来的问题和编辑(或者更确切地说,我们这些阅读它们的人),请学习:1)检查邮件发布表单下面的预览是否如您所期望的那样。2) 如何使用代码格式3)如何插入链接和使用列表点。-我刚刚花了最后10分钟清理它,使它的格式和读取逻辑。关于杂种的问题。浏览一下由&.提到“混合动力”的帖子。我们经常发布完整的代码。对不起,安德鲁·汤普森。我花了很多时间试图让它看起来可读,并提供所有相关的代码:(这还不够简单吗?在我花了很多时间重新格式化这篇文章之后,我需要休息一下,然后去做其他事情。我还没有看过代码。
public void mouseClicked(MouseEvent e) {
    label[5].setText("Test 3" + count);
    count++;

    //revalidate();
    repaint();

}