【问题标题】:Java swing window frameJava 摆动窗框
【发布时间】:2011-03-25 10:15:07
【问题描述】:

如何在 java 中使用 swing 操作窗口框架?比如如何改变颜色,如何让它不是PC主题的默认样式,而是变成图片?

【问题讨论】:

标签: java swing


【解决方案1】:

要更改颜色,您可以在框架对象或面板对象上使用 setBackground(Color c) 方法。 示例:

JFrame fr=new JFrame("Color demo");
fr.setBackground(Color.red);  // color set to red
fr.setSize(900,200);          // size changed
fr.setResizable(false);       // you cant resize your window now

要进一步自定义您的 java 框架,您可以关注 thisthis one。 你可以在this website开始挥杆

【讨论】:

  • 请注意,您也可以将 setBackground(Color c) 用于其他摆动组件
  • 我的意思是退出按钮所在的框架,而不是背景
【解决方案2】:

所有与窗口在 Swing 中的外观有关的事情都可以通过外观 (LaF) 来处理。请参阅the LaF tag 了解更多信息(我写的)。大多数外观都会设置窗口内容和其中所有组件的样式。

在 JDK 中随 Swing 提供了许多默认的 LaF。它们包括 Motif、Metal 和 Synth(这是您自定义的空白样式)。您可以在线查找和下载更多内容。在显示 GUI 之前,您可以通过将它们放入类路径并在 main 方法中运行 UIManager.setLookAndFeel(...) 来使用它们中的任何一个。

听起来您正在专门寻找一种自定义窗框的方法,但这种做法并不常见。我个人不会推荐它,但如果你真的想要,你可以通过在Window 上调用setUndecorated(true) 来关闭框架装饰。然后你会留下一个无边框的窗口。然后,您必须决定如何重新实现所需的窗口功能,例如使用自定义关闭按钮关闭。

【讨论】:

    【解决方案3】:

    据我所知,没有办法做到这一点。您可以为您的自定义窗口创建一个自己的类,例如扩展 JWindow。然后,您可以自己创建样式。这只是一点点工作。

    // add pacakge and imports as needed...
    
    /**
     * Sample class implementation for windows with own frame style.
     * Additional constructors may be added as needed. Default constructor used
     * to show principle.
     */
    public class MyWindow extends JWindow {
        public MyWindow() {
            super();
            initUI();
        }   
    
        private void initUI() {
            setLayout(new BorderLayout());
            add(new MyWindowFrameTop(this));
            add(new MyWindowFrameLeft(this));
            add(new MyWindowFrameRight(this));
            add(new MyWindowFrameBottom(this));
        }
    }
    

    正如 Java API 文档所说,JWindow 是“一等公民”。它是桌面中的一个功能齐全的窗口,但错过了关闭、最大化、最小化和窗口菜单等窗口操作的所有实现。通过使用 BorderLayout 并将框架对象的自己的实现投入工作,可以像上面一样添加此功能的实现。 MyWindowFrameXXX 对象可能是 JPanel,用于绘制所需的框架框部件、标题图像等。还可以为窗口操作添加按钮并实现鼠标操作以调整大小。要实现这一点,框架对象需要父窗口引用才能在窗口上执行所有操作。

    在这里写下所有内容会走得很远。我想,原理已经展示出来了,我也不知道真正要实现的实际效果是什么。

    【讨论】:

    • 你能给我举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2014-09-22
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多