当前位置: 首页 > 知识库问答 >
问题:

编译时获取“修饰符'static‘只允许在常量变量声明1错误”消息

百里光熙
2023-03-14

我做了一个程序来显示旋转给定的。jpg文件。编译有困难,因为它声明:

error: Illegal static declaration in inner class Lec8.MyJPanel
        public static BufferedImage toBufferedImage(Image img) {
                                    ^
modifier 'static' is only allowed in constant variable declarations
1 error"
import javax.swing.*;
import java.awt.*;

    public Lec8() throws IOException {
        setSize(1000, 500);
        setTitle("Java Programing");
        getContentPane().add(scrollPane);
        myJPanel.setLayout(new GridLayout());
        myJPanel.add(myJPanell);
        setVisible(true);
    }

    public static void main(String[] args) throws IOException {
        new Lec8();
    }

    public class MyJPanel extends JPanel {
        Image ima;
        Image ima90;
        Image imaflip;
        Image imatrans;

        public MyJPanel() throws IOException {
            setBackground(Color.white);
            Toolkit toolkit = Toolkit.getDefaultToolkit();
            ima = toolkit.getImage("sample2.jpg");

            MediaTracker mt = new MediaTracker(this);
            mt.addImage(ima, 0);
            try {
                mt.waitForAll();
            } catch (InterruptedException ignored) {
            }

            imaflip = genImageFlipVirt(ima);
            ima90 = genImageRotate90(ima);
            imatrans = genImageWithAlpha(ima, 50);
        }

        public static BufferedImage toBufferedImage(Image img) {
// ERROR GENERATAED HERE STATING
// Illegal static declaration in inner class Lec8.MyJPanel public static BufferedImage toBufferedImage(Image img) { ^ modifier 'static' is only allowed in constant variable declarations 1 error
        }
    }
}


共有1个答案

刘令
2023-03-14

公共类MyJPanel extends JPanel{需要将其设置为静态以便支持静态方法或属性,除非您使用的是Java16+。

话虽如此,您可以通过使用ImageIo而不是Toolkit来避免这个问题,例如...

public class MyJPanel extends JPanel {

    BufferedImage ima;
    Image ima90;
    Image imaflip;
    Image imatrans;

    public MyJPanel() throws IOException {
        setBackground(Color.white);
        ima = ImageIO.read(new File("sample2.jpg"));

        imaflip = genImageFlipVirt(ima);
        ima90 = genImageRotate90(ima);
        imatrans = genImageWithAlpha(ima, 50);
    }

}

有关更多详细信息,请参见读取/加载图像

  • Java,JPanel在旋转时裁剪图像
  • 如何在Java中旋转imageIcon
  • 旋转图像对象
  • Java,JPanel在旋转时裁剪图像

镜像/翻转图像实际上非常简单(这是一种巧妙的副作用),例如,AffineTransform.rotate()--如何同时进行xlate、Roting和scale?

 类似资料:
  • 问题内容: 我有一个内部类,用于存储用于游戏的控件的信息,现在我想在其中存储一个静态ArrayList,其中包含控件的所有名称。但我收到此错误:“仅在常量变量声明中允许使用修饰符静态” 现在,我知道可以通过将ArrayList移出类并将其存储在主类中来轻松解决。但是我宁愿将所有信息都放在一个类中,以便我可以访问所有内容。 “ Control.key,Control.trigger,Control.

  • 问题内容: 我正在学习Google的新语言Go。我只是在尝试一些东西,我注意到,如果您声明一个变量并且不对其执行任何操作,则go编译器(在我的情况下为 8g )将无法 编译,并显示以下错误:。令我惊讶的是,大多数语言编译器只是 警告 您有关未使用的变量,但仍会编译。 无论如何,我能解决这个问题吗?我检查了编译器的文档,但看不到任何会改变此行为的内容。有没有一种方法可以删除以进行编译? 问题答案:

  • 问题内容: Java语言文档说: 如果将原始类型或字符串定义为常量,并且在编译时知道该值,则编译器会使用其值替换代码中各处的常量名称。这称为编译时常量。 我的理解是,如果我们有一段代码: 然后,编译器会将x代码中每次出现的内容替换为literal 10。 但假设常量在运行时初始化: 与编译时常量相比,性能是否会下降(无论可以忽略不计)? 另一个问题是下面的代码行: 被编译器以与编译时常量相同的方式

  • 问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl

  • 我使用mariadb和heidisql来执行sql: DECLARE@Account tID INT; 将值('testfirstname','a','testlastname','user@email.com“,1,1,NOW()); set@Account tID=Last_Insert_Id(); 我一直收到一个错误: QL Error(1064):您的SQL语法有错误;查看与您的Maria

  • 修正错误: java:9:error:'else'不带'if'else if(首付>carloan);