防止JFrame显示任何图标

时间:2014-09-08 23:07:26

标签: java swing jframe icons

我不希望我的jframe在任务栏中显示任何图标。基本上,如果我们没有为它指定任何IconImage,那么它会显示默认图标。但在我的程序中,我不希望显示任何图标。

 setUndecorated(true);
 setSize(208, 58);
 setImageIcon(null); // same result

如果我将透明图像用作Icon,即使这样,系统也会显示一个用于图标的半透明矩形。

enter image description here

我的问题很简单。我认为我不需要为此编码。如果有任何方法可以做到这一点,请告诉我。
可以使用JWindowWindow的一种方法,但使用它有许多缺点,我不想这样做。

1 个答案:

答案 0 :(得分:5)

一种可能的解决方案:不显示JFrame,而是显示JDialog。请注意,您放在JFrame的contentPane中的任何复杂GUI都可以放入JDialog中,这是避免创建JFrame子类的创建应用程序的另一个原因。例如:

import java.awt.Dimension;
import javax.swing.*;

public class TestJDialog {
   private static void createAndShowGui() {
      JDialog dialog = new JDialog((JFrame)null, "Test JDialog", true);

      // Using rigid area just to give the dialog size, but you
      // could put any complex GUI in a JPanel in here
      dialog.getContentPane().add(Box.createRigidArea(new Dimension(400, 400)));
      dialog.pack();
      dialog.setLocationByPlatform(true);
      dialog.setVisible(true);
      System.exit(0); // to end Swing event thread
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

缺点是你丢失了窗口右上角的最小化和恢复按钮,但是你不应该拥有这些按钮,因为你没有用于恢复GUI的相关图标。