我尝试使用这些代码在JPanel(在JFrame内)的本地文件夹中创建一个Image输出,但JFrame没有显示任何内容:
package photo;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class UI extends javax.swing.JFrame {
public UI() {
initComponents();
}
public class ImagePanel extends javax.swing.JPanel{
private BufferedImage image;
public ImagePanel() {
try {
image = ImageIO.read(new File("D://Programming/Image Processing/Colour Temperature/Vampire-full.jpg"));
} catch (IOException ex) {
// handle exception...
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new UI().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel Image;
// End of variables declaration
}
我不知道我是否使用了正确的语义,请帮忙。 谢谢。
答案 0 :(得分:0)
正如@MadProgrammer在评论中所说,你应该将你的面板添加到框架中。如果您想在启动应用程序时看到某些内容,还需要设置JFrame的大小。
例如,将UI构造函数更改为:
public UI() {
// set up the size of your frame
this.setSize(800, 600);
// set up a layout manager
this.setLayout(new BorderLayout());
initComponents();
}
您可以根据框架的宽度和高度使用所需的任何值。您还应该设置要使用的布局管理器类型(例如BorderLayout的实例)
然后使用您的initComponents()
方法添加面板
private void initComponents() {
this.add(new ImagePanel());
}
通过这些更改,您的框架将显示ImagePanel中加载的图像