gpt4 book ai didi

java - 将 JTextField/JTextArea 堆叠在 ImageIcon 之上

转载 作者:行者123 更新时间:2023-12-02 06:10:45 25 4
gpt4 key购买 nike

各位程序员大家好,请教一个关于简单 Java 程序的快速问题。我正在尝试为我的程序创建一个登录屏幕。我目前正在使用 ImageIcon,其中包含动画 gif。我想在这个动画 gif 之上有多个 JTextFields 或 JTextAreas(以更容易的为准),这样我就可以输入具有非常漂亮的背景的信息。这可能吗?如果是这样我该如何开始?

更新代码

class PaintPane extends JPanel {

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(background.getImage(), 0, 0, null);
add(enterUsername);//enterUsername is a JTextField
add(enterPassword);//enterPassword is a JPasswordField
repaint();
revalidate();
}

}

最佳答案

扩展 JPanel 并重写 PaintComponent() 以在该 JPanel 中绘制背景。将 JTextFields 和 JTextAreas(两者都同样“简单”)添加到该 JPanel,就像添加任何其他 JPanel 一样。

推荐阅读:http://docs.oracle.com/javase/tutorial/uiswing/painting/

更新代码后进行编辑:不应将添加 JTextField 的代码放入 PaintComponent() 方法中。每次绘制时都会向您的 JPanel 添加一个新的 JTextField,这非常多!相反,请像对待任何其他 JPanel 一样对待 PaintPane,并在每次将其添加到 JFrame 时只将组件添加到其中一次。像这样的东西:

public class Test{
public static void main(String... args){
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//this JPanel paints its own background
JPanel myPanel = new PaintPane();

frame.add(myPanel);
myPanel.add(new JTextField("text field");
myPanel.add(new JButton("button"));

frame.setSize(500, 500);
frame.setVisible(true);
}
}

关于java - 将 JTextField/JTextArea 堆叠在 ImageIcon 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913305/

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