Kal*_*zem 3 java user-interface swing jpanel jframe
我在JFrame类上使用netbeans builder"design".我有传统的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);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何东西,只是一个空的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);
}
}
Run Code Online (Sandbox Code Playgroud)
因为public void paintComponent(Graphics g) {(painting in Swing,Graphics(2D))没有返回任何大小的容器,简单的返回Dimmension(0, 0)
JPanel已经在API中实现FlowLayout(仅接受PreferredSize来自其子节点的那些),然后您custom painting将永远不会在屏幕上看到