我在Java面板中有一个登录表单,其中包含用户名/密码字段。
我想在此登录表单下方添加背景图片。
实现这一目标的最佳方法是什么?
提供示例代码的额外奖励,因为我很难搞清楚这一点。
答案 0 :(得分:12)
我头脑中的两个选项:
在绘制子组件之前,覆盖包含登录表单的面板的paint方法以绘制背景图像。
执行以下操作
opaque(false)
演示第二种方法:
import java.awt.*;
import javax.swing.*;
class BgPanel extends JPanel {
Image bg = new ImageIcon("water.jpg").getImage();
@Override
public void paintComponent(Graphics g) {
g.drawImage(bg, 0, 0, getWidth(), getHeight(), this);
}
}
class LoginPanel extends JPanel {
LoginPanel() {
setOpaque(false);
setLayout(new FlowLayout());
add(new JLabel("username: ")); add(new JTextField(10));
add(new JLabel("password: ")); add(new JPasswordField(10));
}
}
public class FrameTestBase extends JFrame {
public static void main(String args[]) {
JPanel bgPanel = new BgPanel();
bgPanel.setLayout(new BorderLayout());
bgPanel.add(new LoginPanel(), BorderLayout.CENTER);
FrameTestBase t = new FrameTestBase();
t.setContentPane(bgPanel);
t.setDefaultCloseOperation(EXIT_ON_CLOSE);
t.setSize(250, 100);
t.setVisible(true);
}
}