繁体   English   中英

图片和文字在同一窗口中

[英]Picture and text in same window

该程序应该打开一个窗口,添加图片,然后在图片上方添​​加文本“ hello world”。 当我执行frame.add(label)然后尝试添加图片(如代码所示)时,文本就会出现,但是即使我做了相反的操作并首先添加图片,我也只会看到灰色的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添加到frame然后应用layout ,最后添加components

您的代码可能像这样:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM