Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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 将JLabel旋转90度_Java_Swing_Rotation_Jlabel_Imageicon - Fatal编程技术网

Java 将JLabel旋转90度

Java 将JLabel旋转90度,java,swing,rotation,jlabel,imageicon,Java,Swing,Rotation,Jlabel,Imageicon,我有一个Jlabel内的图像,当用户点击按钮时,我想将其向右旋转90度。我自己也尝试过,但有各种各样的错误。我被告知最好的方法是使用图形2D 主要类别: private void SearchButtonActionPerformed(java.awt.event.ActionEvent evt) { BufferedImage image; try { image = ImageIO.read(file); Ima

我有一个Jlabel内的图像,当用户点击按钮时,我想将其向右旋转90度。我自己也尝试过,但有各种各样的错误。我被告知最好的方法是使用图形2D

主要类别:

private void SearchButtonActionPerformed(java.awt.event.ActionEvent evt) {        
BufferedImage image;
        try {
            image = ImageIO.read(file);
            Image scaled = image.getScaledInstance(Jlabel1.getWidth(), Jlabel1.getHeight(), 5);
            Jlabel1.setIcon(new ImageIcon(scaled));
按钮:

 private void rotateButtonActionPerformed(java.awt.event.ActionEvent evt) {
        Graphics2D userImage = (Graphics2D)JLabel1.getGraphics();
    userImage.rotate(Math.toRadians(90));
    userImage.drawImage(JLabel1, JLabel1.getHeight(), JLabel1.getWidth());
    }

永远不要使用Component.getGraphics()在组件上绘图。相反,您应该始终覆盖paintComponent并使用传递给它的图形对象

getGraphics()根本无法工作。Java使用回调函数 绘制图形的机制。你不应该“推” 使用getGraphics()将图形信息导入组件。相反,你 应该等到Java调用paint()/paintComponent()之后 方法。此时,您应该为组件提供 你想画的画

这种机制是必要的,这样Java就可以支持 当窗口内容被遮挡时(例如,被 另一个窗口)。当窗口再次可见时,此类图形 系统必须要求应用程序重构窗口内容。 因此,paint()/paintComponent()应该是 组成部分。然而,getGraphics()对 以前的绘图操作。因此,一旦通过getGraphics()完成绘图 它丢失了,无法重建。里面什么都没有 存储旧的图形数据,AWT/Swing中没有 通知getGraphics()进行一些重新绘制

此外,在某些情况下,Component.getGraphics()只需 返回null。这是该方法的已定义行为。最后, getGraphics()的大多数用户忘记处理图形对象 使用后


“甚至不值得发布”会导致“甚至不值得回答”的感觉。“甚至不值得发布”意味着他们已经满足了需要……所以你基本上决定不发布任何相关代码,并询问我们如何做到这一点。因此,我遗漏了一些关键信息:我需要将发票发送到哪里?我不是要求您为我编码。我只是简单地问一下,Graphics2D是否是获得这种结果的最佳方法。