首页 > 解决方案 > 如何创建带有红色边框的透明窗口?

问题描述

我正在尝试制作一个在按下键时记录屏幕的软件。为了表明程序现在正在录制,我想在屏幕外侧放置一个红色边框。我无法让它工作,这是我到目前为止的尝试:

public Main() {
    JFrame frame = new JFrame("");
    frame.setUndecorated(true);
    frame.setAlwaysOnTop(true);
    frame.setBackground(new Color(0, 0, 0, 0));
    frame.setSize((int)ss.getWidth(), (int)ss.getHeight());
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    frame.createBufferStrategy(3);

    BufferStrategy bs = frame.getBufferStrategy();

    Graphics2D g = (Graphics2D) bs.getDrawGraphics();
    g.setColor(Color.RED);
    g.drawRect(0, 0, frame.getWidth()-1, frame.getHeight()-1);
    g.dispose();
    bs.show();
}

似乎将背景设置为透明会使图形对象无法绘制到jframe上,而将图形对象的背景设置为透明只会留下带有红色边框的白色背景,而不是透明的。我现在完全坚持这个,所以任何帮助都将不胜感激!

标签: javaswing

解决方案


您不能真正以这种方式绘制组件,您需要覆盖paintComponent(g)才能做到这一点。

您可以简单地添加一个边框对象:

        ((JComponent) frame.getContentPane()).setBorder(new LineBorder(Color.RED, 10));

推荐阅读