我在 JFrame 类上使用 netbeans 构建器“设计”。 我有传统的 JFrame,我在其中(使用构建器)添加了一个 JPanel。
现在在代码中,我想像这样向这个面板添加背景:
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
addBackground();
}
private void addBackground()
{
Image bgImage;
try {
bgImage = ImageIO.read(new File("src/general/Mockup.png"));
jPanel1.add(new NewJFrame.ImagePanel(bgImage));
jPanel1.repaint();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
}
我什么也没看到,只有一个空的 JFrame/JPanel。
顺便说一句,我将其用于 ImagePanel 代码
@SuppressWarnings("serial")
class ImagePanel extends JPanel {
private Image image;
ImagePanel(Image image) {
this.image = image;
};
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
}
最佳答案
你的类(class)
ImagePanel extends JPanel {
must overridegetPreferredSize()
,因为
public void paintComponent(Graphics g) {
(在 Swing 中绘画
,Graphics(2D)
)不返回返回容器的任意大小,简单返回Dimmension(0, 0
)JPanel
已实现FlowLayout
(仅接受来自其子项的PreferredSize
)在 API 中,那么您的自定义绘画
将永远不会在屏幕上可见
关于java - Swing Netbeans 构建器中不显示背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656635/