首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >独立JPanel

独立JPanel
EN

Stack Overflow用户
提问于 2012-11-07 18:35:13
回答 2查看 345关注 0票数 2

如何创建一个看起来像JPanel/JLabel的JFrame?

我需要一个闪屏,它将在我的程序在显示主窗口之前进行一些计算时显示(我知道Java中有一个闪屏选项,但我需要我的选项在加载类之后显示,而不是在加载过程中显示)。

我如何创建它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-07 18:36:59

创建一个未修饰的JFrame,如下所示:

代码语言:javascript
复制
JFrame frame = new JFrame();
frame.setUndecorated(true);

但是,我建议您使用java.awt.SplashScreen,因为它是一段已经在许多情况下使用和测试过的代码,因此它肯定比您可以编写的代码更稳定。

票数 4
EN

Stack Overflow用户

发布于 2012-11-07 18:56:44

您不需要JFrame。下面是一个使用JWindow的示例。

单击该按钮以显示Spash屏幕,然后通过单击spash屏幕将其隐藏。

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Properties;

import javax.swing.*;

public class Splashing {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Splashing");
                JButton splash = new JButton("Splash");
                JPanel orangePanel = new JPanel();
                orangePanel.setBackground(Color.orange);
                frame.getContentPane().add(orangePanel, BorderLayout.CENTER);
                frame.getContentPane().add(splash, BorderLayout.SOUTH);
                splash.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        Splash s = new Splash();
                        s.setVisible(true);
                    }
                });
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setMinimumSize(new Dimension(800, 450));
                frame.setLocationRelativeTo(null); // Center
                frame.pack();
                frame.setVisible(true);
            }
        });
    }

    static class Splash extends JWindow {

        private final Properties sysProps = System.getProperties();

        public Splash() {
            super();
            this.setAlwaysOnTop(true);
            initListeners();
            initGUI();
            this.setVisible(false);
        }

        void initListeners() {
            this.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    Splash.this.setVisible(false);
                    Splash.this.dispose();
                }
            });
        }

        void initGUI() {
            final Dimension preferredSize = new Dimension(480, 360);
            setPreferredSize(preferredSize);
            setMinimumSize(preferredSize);
            setMaximumSize(preferredSize);

            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            this.setLocation((screenSize.width - 480) >> 1, (screenSize.height - 360) >> 1);
            this.pack();
            repaint();
        }

        public void paint(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            // TODO Add an appropriate image here
            //g2.drawImage(someImage, 0, 0, this);
            drawAboutText2(g2);
        }

        void drawAboutText2(Graphics2D g2) {
            g2.setFont(new Font("Verdana", Font.PLAIN, 10));
            g2.setColor(new Color(128, 130, 132));
            g2.drawString("All rights reserved", 20, 310);
            g2.drawString("Author: To be decided", 20, 325);
            g2.drawString("http://www.mywebsite.com", 20, 340);

            g2.drawString(getBuild(), 260, 295);
            g2.drawString(getJDK(), 260, 310);
            g2.drawString(getVendor(), 260, 325);
            g2.setColor(new Color(241, 101, 56)); // orange

            g2.drawString(getLicensee(), 260, 340);
        }

        private String getBuild() {
            return "Build# 427 on 15. June 2006";
        }

        private String getJDK() {
            return "JDK: " + sysProps.getProperty("java.version");
        }

        private String getVendor() {
            return "Vendor: " + sysProps.getProperty("java.vendor");
        }

        private String getLicensee() {
            return "Licensee: " + "John Doe";
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13267882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档