我已经为这个问题苦苦挣扎了几个星期,但无济于事。其他Java论坛无法帮助我解决这个问题,所以我希望我能在这里找到一个有新眼光的人。我有一个JFrame
,除其他外,我正在尝试插入图像。我已经整理了一个重现问题的SSCCE。
public class ImageTest {
public static void main(String[] args) {
SplashScreen.ShowWindow();
}
}
public class SplashScreen {
private JFrame frmKcbsEventsSearch;
public SplashScreen() {
initialize();
}
public static void ShowWindow() {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SplashScreen window = new SplashScreen();
window.frmKcbsEventsSearch.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void initialize() {
frmKcbsEventsSearch=new JFrame();
frmKcbsEventsSearch.getContentPane().setBounds(new Rectangle(200, 200, 520, 450));
frmKcbsEventsSearch.getContentPane().setFont(new Font("Times New Roman", Font.PLAIN, 16));
frmKcbsEventsSearch.setTitle("KCBS Events Search");
frmKcbsEventsSearch.setBounds(200,200,520,450);
frmKcbsEventsSearch.getContentPane().setLayout(new FlowLayout());
frmKcbsEventsSearch.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JLabel logo;
java.net.URL logoURL=getClass().getResource("KCBSLogo.jpg");
if (logoURL!=null) {
try {
logo = new JLabel();
logo.setIcon(new ImageIcon(logoURL));
}
catch (Exception e) {
logo = new JLabel("KCBS Logo");
}
}
else {
logo = new JLabel("KCBS Logo missing");
}
logo.setHorizontalAlignment(SwingConstants.CENTER);
logo.setVerticalAlignment(SwingConstants.CENTER);
frmKcbsEventsSearch.getContentPane().add(logo);
}
}
在其他地方已经提到,布局对于完成这项工作很重要。我没有太多运气让布局管理员做我想做的事情,但在这种情况下,我只想显示图像。一旦我有了它,我将按照我想要的方式格式化它。
这段代码工作得很好!我将 KCBSLogo.jpg 更改为我命名为 tile.png 的源。当我运行它时,它完美地显示。确保 KCBSLogo.jpg 位于项目的 SRC 文件夹中。
https://i.stack.imgur.com/sYfYF.png
如您所见,显示了磁贴图像。