2011-03-26 79 views
1

我想在我的JDialog中添加2个标签;一个标签会有动画gif;其他将有文字。如何添加这两个,使他们不重叠?我不想硬编码他们的位置。我希望程序做出固有的调整。如何添加不重叠的标签

由于提前

代码:

 JLabel l2=new JLabel(""); 
    try { 

      Image img = ImageIO.read(getClass().getResource("resources/wait_animated.gif")); 
      ImageIcon imgnew=new ImageIcon("G:\\my java\\DesktopApplication1\\src\\desktopapplication1\\resources\\wait_animated.gif"); 
      l2.setIcon(imgnew); 
      imgnew.setImageObserver(l2); 
    } 
    catch (IOException ex) { 
    } 
    l2.setLocation(300,300); 
    JDialog d=new JDialog(); 
    JLabel l=new JLabel("Please Wait While Processing is Done...  "); 

    JDesktopPane dp=new JDesktopPane(); 
    dp.setPreferredSize(new Dimension(300,50)); 
    l.setPreferredSize(new Dimension(250,50)); 

    l2.setPreferredSize(new Dimension(20,20)); 

    d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
    d.setTitle("Wait dialog"); 
    d.add(l); 
    d.add(l2); 

回答

1

你意识到一个标签可以同时具有文本和图像,对吧?例如。

import javax.swing.*; 
import java.net.URL; 

class AnimatedGifInLabelWithText { 

    public static void main(String[] args) throws Exception { 
     final URL url = new URL("http://pscode.org/media/starzoom-thumb.gif"); 
     Runnable r = new Runnable() { 
      public void run() { 
       ImageIcon ii = new ImageIcon(url); 
       JLabel label = new JLabel("Zoom!", ii, SwingConstants.CENTER); 
       JOptionPane.showMessageDialog(null, label); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
+0

谢谢安德鲁。不,我不知道我能做到这一点。 – CyprUS 2011-03-26 19:24:23

+0

不客气。请仔细看看Bombe的建议。在Java中创建GUI时,了解布局管理器如何工作非常重要。很少有必要手动设置组件的大小,首选大小或位置和边界。这是布局经理的职责。一旦布局管理器完成了他们的工作,对顶层容器的pack()调用将使其大小达到显示其包含的组件所需的最小值。像魔术一样。 ;) – 2011-03-26 19:44:20