如何在启动画面上显示jbutton

时间:2014-03-25 01:28:40

标签: java swing jbutton splash

如何向启动画面添加按钮

您好我必须创建java splashscreen并在启动期间停止/暂停并显示确定按钮。每次编译netbean时都会运行启动画面。

public class Main
{
  static SplashScreen mySplash;    // instantiated by JVM we use it to
                                   // get graphics
 static Graphics2D splashGraphics;  // graphics context for overlay of the
                                   // splash image
 static Rectangle2D.Double splashTextArea;       // area where we draw the text

 static Rectangle2D.Double splashProgressArea;   // area where we draw the progress bar

 static Font font;                               // used to draw our text

 public static void main(String[] args)
 {
   splashInit();           // initialize splash overlay drawing parameters

}

 //create button here
 private static void splashInit()
{

  //do coding here for mannipulating splash screen
  //put ok button here

 }
}

我们怎么可能把按钮放到闪屏上?通常我只能将JButton放在JFrameJPanel。是否可以将按钮放在像闪屏这样的图像上?

参考:Splashscreen beginner netbean

1 个答案:

答案 0 :(得分:3)

  

“你能告诉我如何将jdialog作为启动画面吗?”

在下面的例子中,这是我做的事情。

  • 创建JDialog课程并确保其为undecorated

    public class SplashDialog extends JDialog {
        ....
        setUndecorated(true);
    
  • 给它一个背景图片

    JLabel background = new JLabel(createImage());
    background.setLayout(new BorderLayout());
    setContentPane(background);
    
  • JPanel JButton添加到background。但是设置JPanel不可见,也只是为了添加一些样式,为JPanel提供一点透明度,所以当你将其设置为可见时,你仍然可以看到{ {1}}图片

    background
  • 使用final JPanel panel = new JPanel(new GridBagLayout()); panel.setVisible(false); panel.setBackground(new Color(0, 0, 0, 150)); JButton okBut = new JButton("OK"); panel.add(okBut); background.add(panel); 设置按钮显示的延迟。

    javax.swing.Timer
  • 确保框架不可见,但按下按钮后,框架变为可见,Timer timer = new Timer(5000, new ActionListener(){ public void actionPerformed(ActionEvent e) { panel.setVisible(true); } }); timer.setRepeats(false); timer.start(); 处置

    JDialog

现在你有了一个简单的斜杠屏幕

初始启动

enter image description here

5秒后飞溅

enter image description here

okBut.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        dispose();
        parent.setVisible(true);
    }
});