Java 使用3个按钮绘制自己的框架

Java 使用3个按钮绘制自己的框架,java,swing,frame,Java,Swing,Frame,标题可能不合适,但这里有完整的解释 我需要的是,我的框架应该有3个按钮(最小化,最大化,关闭),但框架的边界应该是定制的(一些颜色/梯度) 见此: (来源:) 编辑:我还没有开始编码,因为我不知道从哪里开始,将所需的内部框架图标添加到未装饰框架中的容器中,如图所示。一些外观和感觉支持JFrame装饰,例如标准框架金属,它可以: 您可以通过使用来检查LaF是否支持装饰 通过修改LaF,可以更改框架装饰的绘制方式 或者,您可以创建一个完全没有装饰的框架。调用框架实例: 因此,您可以轻松地在内容

标题可能不合适,但这里有完整的解释

我需要的是,我的框架应该有3个按钮(最小化,最大化,关闭),但框架的边界应该是定制的(一些颜色/梯度)

见此:
(来源:)


编辑:我还没有开始编码,因为我不知道从哪里开始,将所需的内部框架图标添加到未装饰框架中的容器中,如图所示。

一些外观和感觉支持JFrame装饰,例如标准框架金属,它可以:

您可以通过使用来检查LaF是否支持装饰

通过修改LaF,可以更改框架装饰的绘制方式

或者,您可以创建一个完全没有装饰的框架。调用框架实例:

因此,您可以轻松地在内容窗格中绘制所需的任何内容。然而,除非您自己实现这些功能,否则此类窗口无法轻松移动、调整大小、最小化或最大化

你会发现这篇文章很有趣


我使用了以下方法:

要创建无边框的框架,请执行以下操作:

  • 删除行
    JFrame.setDefaultLookAndFeelDecorated(true)
  • 添加行
    frame.setUndercorated(true)

更新:我找到了一系列关于如何为Nimbus外观添加框架装饰的文章:

第三步中的帧看起来是这样的:


您可以使用这些文章中的代码作为实现自己的框架装饰的基础。

您可能希望创建自己的完整外观。这个问题没有一个真正的答案。看一看,如果你想自定义框架,那么你可以自己画。在绘制整个框架时,可以绘制任意多个按钮,但必须处理事件。顺便说一句,您可以更改单个组件JFrame的外观。@alexey:您说得对,我只想精确地修改JFrame的外部边框,您能建议一些方法吗?
public class AFrame {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame.setDefaultLookAndFeelDecorated(true);
                JFrame frame = new JFrame("A Frame");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.setSize(200, 100);
                frame.setLocationByPlatform(true);

                frame.setVisible(true);
            }
        });
    }

}