我想将图像添加到由 Netbeans GUI Designer 创建的面板中。 这是我的 Canvas 类
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();
但是图像没有显示。如何修复它?
最佳答案
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
属性的 ...。在该对话框中,您可以浏览图像。 - 然后在设计 View 中右键单击标签,并为标签设置布局管理器。然后您可以开始向标签添加组件。
关于java - 使用canvas在Jpanel中添加图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671865/