当前位置: 首页 > 面试题库 >

使用Swing在JFrame上设置背景图像

卓嘉良
2023-03-14
问题内容

我学习Java已有几周了,在将背景图像应用于JFrame时,我真的很困惑。我遇到的每个教程都不像我那样创建Frames(我扩展了JFrame),或者如果这样做,说明还不够清楚,我无法理解。

下面的代码来自我自己的项目,因此可以帮助我练习到目前为止所学的内容。请您能否以下面的代码为基础,并向我说明要添加的内容和位置,所以我可能以图像作为框架的背景?

我真正要感谢的一件事是,如果您能解释事情的工作方式以及为什么需要这样做以及他们实际上在做什么—我不喜欢盲目复制和粘贴您所做的工作而又不知道工作方式如何的想法。
。解释越深入越好;即使听起来很光顾。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class MiniPad extends JFrame implements ActionListener {

    JPanel pan = new JPanel();
    ClassLoader ldr = this.getClass().getClassLoader();
    ImageIcon closeImg = new ImageIcon(ldr.getResource("\\images\\buttons\\closeBtn.png"));
    JTextArea note = new JTextArea("", 6, 21);
    JScrollPane notes = new JScrollPane(note);
    JButton close = new JButton(closeImg);

    public static void main(String[] args) {
        MiniPad padgui = new MiniPad();
    } //Instance of GUI

    public MiniPad() {
        super("Notepad");
        setSize(265, 191);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        add(pan);
        setVisible(true);
//Specifications
        note.setLineWrap(true);
        note.setWrapStyleWord(true);
        notes.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        close.setBorderPainted(false);
        close.setContentAreaFilled(false);
        close.setOpaque(false);
//Adding to JPanel 'pan'
        pan.add(notes);
        pan.add(close);
        close.addActionListener(this);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == close) {
            setVisible(false);
        }
    }
}

问题答案:

关于你的问题,标题为

您将需要设置一个自定义Component(例如JPanel)并覆盖该paintComponent方法

看一眼

  • 在Swing中执行自定义绘画
  • Java 2D图形

现在,您将遇到一些问题,注释窗格将阻止大多数背景,使图像模糊。这不应该阻止尝试;)

您将要熟悉如何使Swing组件也变得透明。

一些反馈;)

我不认为您需要保留Classloader对它的引用,因为它的用途只是在增加代码的重量和复杂性。这不是一个大问题,但是我的第一个问题是:“他将类加载器用于什么?”

我可能也会采用某种命名约定。通常稍微冗长一些将使它更容易理解代码。

close?? 那是动作吗?也许像“ closeButton”之类的东西,至少我知道这是某种类型的按钮



 类似资料:
  • 我刚开始尝试创建java接口,我想创建一个作为大学项目的一部分。 就像我说的,我是一个新手,所以我知道它可能非常简单,或者我没有把它搞砸,但如果有人能帮助它,它将会非常接近。

  • 问题内容: 有什么方法可以将图像设置为背景JFrame? 问题答案: 没有内置方法,但是有几种方法可以实现。目前我能想到的最直接的方法是: 创建的子类。 重写绘制想要显示的图像的方法。 设置内容窗格的是这个子类。 一些示例代码: 请注意,如果你要使用此代码,则不会处理调整图像大小以适合的大小。

  • 问题内容: 我想要一个没有箭头按钮(完成)的JComboBox,启用时具有绿色背景,禁用时具有灰色背景(未完成)。我还为下拉列表使用了自定义渲染器(完成) 我检查了BasicComboBoxUI的源代码,并尝试覆盖某些方法,但没有任何反应。下拉菜单始终具有灰色/蓝色背景。 这是我最后一次尝试的SSCCE。我尝试了所有我能想到的。请给我一个提示,我迷路了。 问题答案: 由于我想让这个颜色应用程序更广

  • 问题内容: 如何设置JFrame的背景颜色? 问题答案: 检索框架的内容窗格,并使用从继承的方法更改颜色。 例:

  • 问题内容: 是否可以使用CSS设置背景图片的大小? 我想做类似的事情: 但是这样做似乎是完全错误的… 问题答案: CSS2 如果需要放大图像,则必须在图像编辑器中编辑图像本身。 如果使用img标签,则可以更改大小,但是如果您需要将图像作为其他内容的背景,那将无法达到预期的效果(并且它不会像您想要的那样重复出现)… CSS3 释放力量 在CSS3中使用可以做到这一点。 所有现代的浏览器都支持此功能,

  • 问题内容: 我正在创建一个GUI,尽管很简单,但我想让背景图像(2048 X 2048)填满整个窗口,并在左上角放置一个正方形,可以偶尔加载64 X 64图像。在此先感谢提供帮助的任何人:)编辑:我已经知道如何使JFrame设置大小,其图像加载需要帮助。 问题答案: 这是一个在JFrame中添加背景图像的简单示例: 点击这里了解更多信息