Java 使用画布在Jpanel中添加图像
我想将图像添加到由Netbeans GUI设计器创建的面板中。 这是我的画布课Java 使用画布在Jpanel中添加图像,java,swing,canvas,netbeans,jpanel,Java,Swing,Canvas,Netbeans,Jpanel,我想将图像添加到由Netbeans GUI设计器创建的面板中。 这是我的画布课 private static class GraphicsClass extends JPanel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); Toolkit tkit; tkit=getToolkit(); Image im
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();
但是图像没有显示出来。如何修复它 您可以通过使用BuffereImage类或使用MediaTracker跟踪图像加载时间来解决此问题
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
方法中的代码是自动生成的,默认情况下不可编辑。你可以编辑它,但我建议不要(除非你真的知道自己在做什么)。如果你看一下代码,你就会明白我一开始想说什么
修复:从设计器中创建一个面板表单(即新建->Swing表单->JPanel表单)。然后,您可以简单地将面板拖放到框架上,如图所示
其他注意事项:
- 不要使用
方法创建图像。将其设为类成员并在构造函数中创建paintComponent
- 如果要创建图像(例如背景图像),可以使用
和ImageIcon
来代替面板,并将布局管理器设置为标签,然后可以开始将组件添加到标签上JLabel
- 拖放标签
- 转到标签的属性并单击。。。
图标的属性。在该对话框中,可以浏览图像
- 然后在设计视图中的标签上单击鼠标右键,然后为标签设置布局管理器。然后,可以开始向标签添加零部件