Java Swing应用程序消息对话框帮助

Asg*_*har 3 java user-interface swing

我正在研究Java Swing应用程序.我需要创建一个如图所示的对话框.我不知道这个名字; 我无法解释,所以我附上了一张照片.请告诉我这是什么以及如何在我的GUI应用程序中创建它.

图像是这样的

Moo*_*eam 8

皮肤猫的方法不止一种.


public final class JDialogDemo {
    private static BufferedImage bi;

    public static void main(String[] args){
        try {
            loadImage();

            SwingUtilities.invokeLater(new Runnable(){
                @Override
                public void run() {
                    createAndShowGUI();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void loadImage() throws IOException{
        bi = ImageIO.read(JDialogDemo.class.getResource("../resource/close-icon.png"));
    }

    private static void createAndShowGUI(){
        final JDialog dialog = new JDialog();
        dialog.setUndecorated(true);

        final JPanel panel = new JPanel(){
            @Override
            public Dimension getPreferredSize(){
                return new Dimension(400, 40);
            }
        };
        panel.setBorder(BorderFactory.createLineBorder(Color.GRAY));
        panel.setBackground(new Color(238, 221, 130));
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));

        final JLabel closeLabel = new JLabel();
        closeLabel.setIcon(new ImageIcon(bi));
        closeLabel.addMouseListener(new MouseAdapter(){
            @Override
            public void mouseClicked(MouseEvent e){
                dialog.dispose();
            }
        });

        panel.add(new JLabel("There are deleted items that used to be in this folder."));
        panel.add(Box.createHorizontalGlue());
        panel.add(closeLabel);
        dialog.add(panel);
        dialog.pack();
        dialog.setLocationRelativeTo(null);
        dialog.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


这只是一个示范.无论如何,请随意定制.


tra*_*god 5

另一个方便的图标来源是UIManager.在这种情况下,JInternalFrameLook&Feel closeIcon有一些吸引力,但其他也可用.

修改@ Moonbeam的答案会产生以下结果.

private static final Icon icon = UIManager.getIcon("InternalFrame.closeIcon");
...
private static void createAndShowGUI() {
    ...
    closeLabel.setIcon(icon);
    ...
}
Run Code Online (Sandbox Code Playgroud)

JDialogDemo

  • @Moonbeam:噢,我忽略了`MouseListener`!顺便说一句,你可能需要在[GradientPaintDemo]中设置复合,如[here](http://sites.google.com/site/drjohnbmatthews/composite)所示.另外,不要`dispose()`你没有创建的图形上下文. (2认同)