这个程序应该打开一个窗口,添加一张图片,然后添加文本" 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")));;
}
}
答案 0 :(得分:1)
您应该使用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);
}
}
答案 1 :(得分:1)
标签可以同时包含文字和图标,并且可以自定义相对位置。
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)
。