当前位置: 首页 > 知识库问答 >
问题:

Java:如何在未修饰的JFrame周围绘制边框?

阳文轩
2023-03-14

我目前有DropShadowBorder类(它扩展了javax.swing.border.border类),来自SwingX库,因此这是常规Border的一个实例。我想在我未修饰的jframe周围画出这个边框。我当前在JFrame中使用以下方法设置边框:

DropShadowBorder b = new DropShadowBorder(Color.BLACK, 0, 10, 0.2f, 10, true, true, true, true);
this.getRootPane().setBorder(b);

注意:我正在使用框架的根窗格来绘制边框,因为框架本身不支持边框。

问题是边框是在组件内部绘制的,正如你可以在图片中看到的,阴影边框是在内部绘制的,与框架本身的边框相反:

注意:(阴影)边框是根据边框的边界在边框内绘制的,而不是在边框外。

使用哪种边框并不重要,所有边框都是在jframe本身内部绘制的。

一种方法可以用来解决这个问题,是创建一个不同的无装饰的全屏幕窗口,它是透明的,普通的窗口放在上面。这个全屏幕窗口是用来画阴影的,所以阴影不需要画在框架本身。这是一个得到类似结果的解决方案,但这不是我想要的。我想在框架外画一个边框。这类解决方案通常会引起其他问题。

共有1个答案

田嘉澍
2023-03-14

是的,您可以在未修饰的JFrame周围绘制边框。只需获得JFrame的根窗格,并通过setBorder(Border Border)方法设置其边框。

getRootPane().setBorder(BorderFactory.createMatteBorder(4, 4, 4, 4, Color.RED));

例如:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Borders2UndecoFrame extends JFrame{
    JLabel label = new JLabel("Welcome!", JLabel.CENTER);
    public Borders2UndecoFrame(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(new Dimension(200, 200));
        add(label, BorderLayout.CENTER);
        setUndecorated(true);
        getRootPane().setBorder(BorderFactory.createMatteBorder(4, 4, 4, 4, Color.RED));
        setVisible(true);

    }
    public static void main(String[] args) {
        new Borders2UndecoFrame();
    }

} 
 类似资料:
  • 问题内容: 如何为未装饰的jframe添加阴影? 从我在网上找到的内容中,您也许可以将jframe添加到另一个黑色 半透明窗口中以产生阴影效果。或者以某种方式将 这样的内容应用于JFrame: 我只是想知道最好的方法,或者是完全不同的 方法来获得相同的效果,例如从另一个类而不是从 jframe扩展。我是Java的新手,所以我可能走错了方向,因此欢迎您提出任何 建议。 问题答案: 基本上,您需要制作

  • 我实现了一个按钮,将图形保存到png文件中。该图形是通过以下方式创建的: 当我点击保存按钮时,执行以下代码: 由于某些原因,轴和绘图标题从最终绘图中省略。但是它们没有被裁剪-在图形周围有一个边界黑框,它是空白的(见下文) 无论我如何尝试,更改figsize、dpi、边界框等,我都无法使用轴标签保存图形。

  • 我正在尝试为类(Java)制作一种棋盘。我们的老师想让我们把棋盘上的每个方块都做成一个按钮,他给了我们一个按钮应该是什么样子的想法。空方块显然需要是纯黑色或纯白色。当方块上有一块时,问题就出现了。我们的老师想让我们用文本来记录哪些方块上有哪些块,他想让文本是黑色还是白色取决于它是谁的块。由于我们不能在白色背景上放置白色文本,他建议当一个方块上有一块时,我们将方块的颜色改为灰色。我不是粉丝。有没有可

  • 我觉得我经历了我需要做的一切: 创建一个名为paintComponent的图形类,并扩展JComponent 将图形g作为参数,然后执行Graphics2D g2d=(Graphics2D)g 将图形类添加到我的JFrame 我没发现有什么问题,所以我有点困惑 我的代码在这里: 和

  • 问题内容: 我在python代码中遇到了麻烦。 我的问题是我需要在图像的感兴趣区域周围绘制一个矩形。如何在python中完成?我正在执行对象检测,并想在我相信在图像中找到的对象周围绘制一个矩形。 问题答案: 请不要尝试使用旧的cv模块,请使用cv2: [编辑]追加以下后续问题:

  • 我正在为wordpress做一个菜单,我正在尝试在不同的菜单项周围画一个类似“绘制”的边框。 至于现在,我有一个“画”圈的背景。(我们就叫它BG.PNG吧)。 我可以得到一个菜单项周围的圆圈,并将其正确放置。当然,我的一些菜单项的单词比其他的要长。 这就是我现在如何使用菜单的活动部分: 这显示了当悬停菜单项时的圆圈,但在某些单词上它太大或太小。这与我正在使用的png类似:http://instan