我想将图像放在扩展的 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);
得到这个输出
关于java - 将图像作为背景放置在扩展的 JFrame 上有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592696/