Java 将JLabel旋转90度
我有一个Jlabel内的图像,当用户点击按钮时,我想将其向右旋转90度。我自己也尝试过,但有各种各样的错误。我被告知最好的方法是使用图形2D 主要类别: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
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是否是获得这种结果的最佳方法。