2011-07-20 52 views
3

我正在研究Java Swing應用程序。我需要創建一個如圖所示的對話框。我不知道這個名字;我無法解釋,所以我附上了一張照片。 請告訴這是什麼,以及如何在我的GUI應用程序中創建它。Java Swing應用程序消息對話框幫助

Image is like this

+0

看起來像定製工具提示,BaloonTip基於未decoreted的JDialog#形態 – mKorbel

+5

請解釋一下你想要的東西:一個黃色的盒子?刪除的項目?高亮文字?定製關閉裝飾? – trashgod

+0

它似乎是某種狀態或消息欄。我不記得在Swing中是否有內置的方法(我的經驗非常有限),但也許這會幫助你找到它。 –

回答

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); 
    } 
} 

enter image description here


這是一個簡單的演示。無論你喜歡,隨意定製這個。

+0

爲什麼不,很好+1 – mKorbel

+0

+1另請參閱此[變體](http://stackoverflow.com/questions/6762984/java-swing-application-message-dialog-help/6766983#6766983)。 – trashgod

+0

真的幫助了這個 – Asghar

5

另一個便捷的圖標來源是UIManager。在這種情況下,JInternalFrame看&感覺closeIcon有一些吸引力,但others也可用。

修改@ Moonbeam的answer產生下面的結果。

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

JDialogDemo

+0

我很好奇這個'closeIcon'實際上關閉了對話框! – trashgod

+0

+1,非常好。關於你的評論,這意味着你不需要添加一個'MouseListener'? – Moonbeam

+2

@Moonbeam:哦,我忽略了'MouseListener'!順便說一句,您可能需要按照[這裏](http://sites.google.com/site/drjohnbmatthews/composite)的建議在'GradientPaintDemo'中設置組合。另外,不要「處理()」你沒有創建的圖形上下文。 – trashgod