Java 同一窗口中的图片和文本

Java 同一窗口中的图片和文本,java,swing,jlabel,imageicon,Java,Swing,Jlabel,Imageicon,这个程序应该打开一个窗口,添加一张图片,然后在图片上方添加文本“hello world”。当我使用frame.add(标签)并尝试添加图片(如代码所示)时,文本会出现,但即使我使用相反的方法并首先添加图片,我也只能得到一个灰色的schreen。有人能告诉我怎样才能同时得到图片和文字吗 public window(){ JFrame frame = new JFrame("name"); JLabel label = new JLabel ("hello world", JLa

这个程序应该打开一个窗口,添加一张图片,然后在图片上方添加文本“hello world”。当我使用frame.add(标签)并尝试添加图片(如代码所示)时,文本会出现,但即使我使用相反的方法并首先添加图片,我也只能得到一个灰色的schreen。有人能告诉我怎样才能同时得到图片和文字吗

  public window(){
    JFrame frame = new JFrame("name");
    JLabel label = new JLabel ("hello world", JLabel.CENTER);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setSize(600, 400);
    frame.setVisible(true);
    label.setAlignmentX(0);
    label.setAlignmentY(0);
    frame.add(label);
    frame.add(new JLabel(new ImageIcon("file")));;
  }
}

您应该使用
overlay
布局,但它适用于
JPanel

因此,在
框架中添加
JPanel
,然后应用
布局
,最后添加
组件

您的代码可能如下所示:

public window(){
    JFrame frame = new JFrame("name");
    JLabel label = new JLabel ("hello world", JLabel.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel() {
      public boolean isOptimizedDrawingEnabled() {
        return false;
      }
    };
    LayoutManager overlay = new OverlayLayout(panel);
    panel.setLayout(overlay);  
    frame.setResizable(false);
    frame.setSize(600, 400);
    frame.setVisible(true);
    label.setAlignmentX(0);
    label.setAlignmentY(0);
    panel.add(label);
    panel.add(new JLabel(new ImageIcon("file"))); 
    frame.add(panel, BorderLayout.CENTER);
  }
}

标签可以包含文本和图标,并且可以自定义相对位置

JLabel label = new JLabel ("hello world", new ImageIcon("file"), JLabel.CENTER);
label.setVerticalTextPosition(SwingConstants.TOP);
frame.add(label);
//frame.add(new JLabel(new ImageIcon("file")));;
默认布局为BorderLayout,
add(label,BorderLayout.CENTER)

1)
new ImageIcon(“文件”)
此图像是您提供的还是用户提供的?确切的文件名是什么?2)
frame.setVisible(true)这应该在最后完成。3) 添加两个组件(在本例中)将导致只有一个可见。