gpt4 book ai didi

java - 将背景图像添加到包含其他组件的面板

转载 作者:行者123 更新时间:2023-12-02 18:08:30 25 4
gpt4 key购买 nike

我在 Java 面板中有一个登录表单,其中包含用户名/密码字段。

我想在此登录表单下方添加背景图像。

实现这一目标的最佳方法是什么?

提供示例代码的额外奖励,因为我很难弄清楚这一点。

最佳答案

我的脑海中有两个选择:

  1. 重写包含登录表单的面板的绘制方法,以在绘制子组件之前绘制背景图像。

  2. 执行以下操作

    1. 创建背景图像面板(重写paintCompanent方法来绘制图像)。
    2. 将此面板的布局管理器设置为 BorderLayout
    3. 在包含登录表单的面板上设置opaque(false)
    4. 使用 BorderLayout.CENTER 将登录表单面板添加到背景面板。

第二种方法的演示:

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);
}
}

enter image description here

关于java - 将背景图像添加到包含其他组件的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com