如何在不添加像JLabel这样的“中间人”的情况下将图像添加到JFrame / JPanel / JComponents? (Swing)(Kotlin)

问题描述 投票:0回答:1

语言:Kotlin,GUI库:Swing,IDE:IntelliJ IDEA

我知道有类似的短语问题,但是请注意,我想向容纳其他组件的任何类型的JComponent添加多个图像,而不仅仅是一个图像。例如,我不关心将图像添加到JLabel,我已经知道该怎么做。我想知道如何将图像添加到JFrame,JPanel,Container等。拥有其他组件的所有事物(并具有add(Component)函数)。最后,我不希望您将没有图像的图像添加到JLabel,然后将其添加到容器的解决方法。我只想使用Image类或BufferedImage或URL之类的子集。

例如,我希望能够从Container类jFrame.add(component)调用add()方法,其中component是某种图像。我希望这导致图像显示在屏幕上。ImageIcon类不是Component,因此无法单独输入。我想我必须创建某种从Component或JComponent扩展的自定义Image类,但是我不知道要添加到另一个JComponent上才能在屏幕上显示图像,我必须重写什么。对此有多种解决方案,但为了澄清起见,我不希望在其中添加JLabel或JButton或仅包含Icon的某种“中间人”。无论如何,我都不想显示图标,我想在屏幕上的任何地方显示全尺寸的图像。我将提供一个示例,说明我希望最终结果看起来像什么。

class MyApp() {

    fun init() {
        var jFrame = JFrame()
        jFrame.add(Image("filepath/image.png"))
        //Some other JFrame boiler plate
        jFrame.isVisible = true
    }

}

fun main() {
    MyApp().init()
}

不清楚的部分是Image类,它是一个继承自JImage的自定义类,还是某个我不知道的已经定义的类或方法。我知道ImageIO和BufferedImage和ImageIcon,但是它们都不直接进入此方法,因为它们不继承Component或JComponent。

java image swing kotlin jcomponent
1个回答
0
投票

我想知道如何将图像添加到JFrame,JPanel,Container等。>

© www.soinside.com 2019 - 2024. All rights reserved.