Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JPanel上使用9面片图像作为背景?_Java_Swing_Jpanel_Nine Patch - Fatal编程技术网

Java 如何在JPanel上使用9面片图像作为背景?

Java 如何在JPanel上使用9面片图像作为背景?,java,swing,jpanel,nine-patch,Java,Swing,Jpanel,Nine Patch,我正在寻找一种使用文件作为javax.swing.JPanel背景的方法。 因此,当JPanel的尺寸发生变化时,背景图像会自动调整自身大小 可能吗?或者我必须创建图像的所有部分,并在侦听器触发时手动调整其中一些部分的大小(如下面的代码) 是的,可以使用其中一种实现来指定目标矩形的角。如果源矩形和目标矩形的大小匹配,则该方法将更快完成。就是一个例子。有效,但这不是我想要的。此解决方案还可以调整角的大小,这不应该发生在9-patch文件中!根据你的评论,我猜你想要这样的东西;我不知道现有组件,但d

我正在寻找一种使用文件作为javax.swing.JPanel背景的方法。 因此,当JPanel的尺寸发生变化时,背景图像会自动调整自身大小

可能吗?或者我必须创建图像的所有部分,并在侦听器触发时手动调整其中一些部分的大小(如下面的代码)


是的,可以使用其中一种实现来指定目标矩形的角。如果源矩形和目标矩形的大小匹配,则该方法将更快完成。就是一个例子。

有效,但这不是我想要的。此解决方案还可以调整角的大小,这不应该发生在9-patch文件中!根据你的评论,我猜你想要这样的东西;我不知道现有组件,但
drawImage()
自动缩放到目标矩形。
drawImage()
缩放所有矩形。我不要这个。我想要的是使用Android上的图像。该解决方案不缩放所有矩形,只缩放一些已定义的部分,以使缩放后的图像完全适合该区域,但保持角点不变。如果我不够清楚的话,这个链接会帮助你;例如,您必须澄清您的用例。因此,好吧,我必须创建自己的实现,就像我发布的代码一样。谢谢你抽出时间。
public class JPanelWithNinePatchBackground extends JPanel { 
{ 
    /* Define all parts of the background like BufferedImage */

    addComponentListener(new ComponentAdapter() { 
        public void componentResized(ComponentEvent e) { 

            // Resize images . . . 

            JPanelWithBackground.this.repaint(); 
        } 
    });

    /* . . . */

}