问题是你在设置框架的大小时没有考虑框架的边框(也可能是菜单栏)……
而不是使用this.setSize(680,581),它将导致图像在框架边框内呈现(并超出非可见空间),您应该简单地调用JFrame#pack并让框架决定如何最好地自我调整大小(根据其内容的首选大小)
左,绝对尺寸,正确的首选尺寸
public class SimpleImageLabel {
public static void main(String[] args) {
new SimpleImageLabel();
}
public SimpleImageLabel() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JLabel imageLabel = new JLabel();
try {
imageLabel.setIcon(new ImageIcon(ImageIO.read(new File("/path/to/image"))));
} catch (Exception e) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(imageLabel);
frame.pack(); //
// frame.setSize(imageLabel.getPreferredSize()); //
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}