相关疑难解决方法(0)

Java鼠标"手电筒"效果如何?

我正在编写一个简单的2D迷宫游戏,你可以通过很多房间.我想通过限制玩家的观点来使其有点挑战.起初我想过将框架中的默认鼠标图标替换为半透明的PNG椭圆,但后来我意识到我需要阻止它周围的东西.

我能想到的唯一方法是将鼠标指针图标设置为大于框架的图像(因此当用户移动到角落时仍然是黑色时)将其填入然后放置清晰褪色的椭圆在指针区域.

我想知道的是,这是可能的,我将如何做到这一点?我正在学习java,所以示例和oracle文档对我很有帮助.提前致谢!

从这里看到这个链接(加载需要一段时间)PS:我正在使用eclipse.

在此输入图像描述

java swing mouseevent

3
推荐指数
2
解决办法
1058
查看次数

如何绘制透明背景?

我试图让一个JPanel透明,但我不能让它工作.是否有可能做到这一点?

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

public class ClearPanel extends JPanel{
public static void main(String[] args) {
    ClearPanel c = new ClearPanel();
    c.setPreferredSize(new Dimension(200, 200));
    c.setOpaque(false);

    JPanel backPanel = new JPanel();
    backPanel.setBackground(Color.CYAN);

    backPanel.add(c);

    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setContentPane(backPanel);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setVisible(true);
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.fillOval(0, 0, 200, 200);
    g.clearRect(45, 45, 50, 50);

    Graphics2D g2 = (Graphics2D) g;
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f));
    g2.fillRect(75, 75, 50, 50);
}
}
Run Code Online (Sandbox Code Playgroud)

椭圆形应该是不透明的,但矩形我想要透明.透明,我的意思是我应该能够看到ClearPanel背后的面板.

关于MadProgrammer的回答,有没有办法让灰色的盒子在区域之外的地方绘制,但是在该区域内保持透明?

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g); …
Run Code Online (Sandbox Code Playgroud)

java swing transparency jpanel graphics2d

1
推荐指数
1
解决办法
2392
查看次数

标签 统计

java ×2

swing ×2

graphics2d ×1

jpanel ×1

mouseevent ×1

transparency ×1