我想将图像添加到由Netbeans GUI Designer创建的面板中。 这是我的画布类
private static class GraphicsClass extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Toolkit tkit;
tkit=getToolkit();
Image img=tkit.getImage("ampera.jpg");
g.drawImage(img,0,0,this);
}
}
这就是我在JFrame类构造函数
中使用它的方法this.Jpanel1=new GraphicsClass();
但图片没有显示。怎么解决?
答案 0 :(得分:1)
您可以使用BufferedImage类或使用MediaTracker跟踪图像的加载时间来解决此问题
答案 1 :(得分:1)
this.Jpanel1=new GraphicsClass();
不行。假设您只是将一个面板拖放到框架上并将其命名为Jpanel1
,那么在构造函数中您执行了上述代码。当您第一次拖放原始面板时,它会被初始化并布局。当您执行上述代码时,您正在创建一个新组件。原始面板仍然是添加的面板,并且不是相同的引用面板和您刚创建的新面板。所以新面板永远不会显示,它只是一个(没有参考标识符)。就像你有像
public class MyFrame extends JFrame {
public MyFrame() {
initComponents();
jPanel1 = new GraphicsClass();
}
private void initComponent() {
jPanel1 = new JPanel();
// add jPanel1 to frame
}
private class GraphicsClass extends JPanel {}
private JPanel jpanel1;
}
这是基本的netbeans设置。 initComponents
方法中的代码是自动生成的,默认情况下不可编辑。你可以编辑它,但我会反对它(除非你真的知道你在做什么)。如果你看一下代码,你会看到我在开始时谈论的内容。
修复:从设计师创建面板表单(即New-> Swing Form-> JPanel表单)。然后,您只需将面板拖放到框架即可,如here
所示其他说明:
请勿使用paintComponent
方法创建图片。使其成为类成员并在构造函数中创建它。
如果您要创建图像(例如背景),而不是面板,则可以使用ImageIcon
和JLabel
并将布局管理器设置为标签,然后,您可以开始在标签上添加组件。
icon
属性的 ... 。在对话框中,您可以浏览图像。