java - 将图像作为背景放置在扩展的 JFrame 上有什么问题吗?

标签 java swing

我想将图像放在扩展的 JFrame 上以将其设置为背景,扩展的 jframe 仅包含菜单栏。问题是,它不显示图片,我不知道我可能做错了什么。非常感谢任何想法

public class VirtualViewGUI extends JFrame{

    public VirtualViewGUI()
      {
         super("Virtual View");

         JMenuBar jmenuBar = new JMenuBar();
         JMenu fileMenu = new JMenu("File");
         JMenu helpMenu = new JMenu("Help");
         JMenu feel = new JMenu("Look & Feel");

         JMenu layOutMenu = new JMenu("ConfigureCells");
         JMenuItem add_files = new JMenuItem("Select Directory.."); 
         JMenuItem minCellSize = new JMenuItem("height 260 X  width 260"); 
         JMenuItem moderateCellSize = new JMenuItem("height 320 X  width 320"); 
         JMenuItem maxCellSize = new JMenuItem("height 360 X  width 360"); 
         JMenuItem exit = new JMenuItem("Exit");
         JMenuItem help = new JMenuItem("Help Content");

         fileMenu.add(add_files);
         fileMenu.add(exit);
         layOutMenu.add(minCellSize);
         layOutMenu.add(moderateCellSize);
         layOutMenu.add(maxCellSize);
         helpMenu.add(help);

         jmenuBar.add(fileMenu);
         jmenuBar.add(layOutMenu);
         jmenuBar.add(helpMenu);

         ImageIcon myImage=new ImageIcon("grid_2.png");

         JLabel icon = new JLabel(myImage);
         icon.setIcon(myImage);
         setJMenuBar(jmenuBar); 

         add(icon);


         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      }
}

最佳答案

没有,完全没有问题(除了可能没有使用正确的布局管理器)。

与其将图标“添加”到框架,不如将图标作为框架的“内容”...

setContentPane(icon);

这意味着当您向框架添加任何其他组件时,它们将被添加到图像的顶部...

public VirtualViewGUI() {
    super("Virtual View");

    JMenuBar jmenuBar = new JMenuBar();
    JMenu fileMenu = new JMenu("File");
    JMenu helpMenu = new JMenu("Help");
    JMenu feel = new JMenu("Look & Feel");

    JMenu layOutMenu = new JMenu("ConfigureCells");
    JMenuItem add_files = new JMenuItem("Select Directory..");
    JMenuItem minCellSize = new JMenuItem("height 260 X  width 260");
    JMenuItem moderateCellSize = new JMenuItem("height 320 X  width 320");
    JMenuItem maxCellSize = new JMenuItem("height 360 X  width 360");
    JMenuItem exit = new JMenuItem("Exit");
    JMenuItem help = new JMenuItem("Help Content");

    fileMenu.add(add_files);
    fileMenu.add(exit);
    layOutMenu.add(minCellSize);
    layOutMenu.add(moderateCellSize);
    layOutMenu.add(maxCellSize);
    helpMenu.add(help);

    jmenuBar.add(fileMenu);
    jmenuBar.add(layOutMenu);
    jmenuBar.add(helpMenu);

    ImageIcon myImage = new ImageIcon("your picture here");

    JLabel icon = new JLabel(myImage);
    icon.setIcon(myImage);
    setJMenuBar(jmenuBar);

    // Don't add the icon to the content pane, make it the content pane, then when you add
    // anything to the frame, they will be added ontop... ;)
    setContentPane(icon);

    pack();
    setVisible(true);


    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

更新示例

我在构造函数的末尾添加了以下代码

setLayout(new GridBagLayout());
JLabel label = new JLabel("Look ma, no hands!");
label.setFont(label.getFont().deriveFont(Font.BOLD, 36f));
label.setForeground(Color.WHITE);
add(label);

得到这个输出

Capture the beer

关于java - 将图像作为背景放置在扩展的 JFrame 上有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592696/

相关文章:

java - 如何实现 JScrollPane 子行为?

Java:使用定时器线程来确定父线程中的行为

java - ImageView不根据屏幕尺寸进行调整

java - 线程中的异常 "main"java.lang.NumberFormatException : For input string: PLEASE TRY IT TO YOUR PC

java - Auto Scaling 无法在 Elastic Beanstalk 中与 Tomcat 一起正常工作

java - 轻量级,不断更新的 Java 图表

java - 为什么JavaFX中TextField继承自javafx.scene.Parent?

java - 如何使用 DefaultListModel() 添加或删除元素时更新 JList

java - 将对象放入 JComboBox 中

java - Java 中的多行标签/区域/ Pane ,带有对齐文本