使用 java.awt 和 java.swing 获取要在框架上显示的 file.png 图像

Posted

技术标签:

【中文标题】使用 java.awt 和 java.swing 获取要在框架上显示的 file.png 图像【英文标题】:Getting an file.png image to display on a frame using java.awt and java.swing 【发布时间】:2018-11-14 09:17:19 【问题描述】:

我正在尝试让图像显示在我正在创建的游戏的框架上。我没有扩展任何 JPanel 或 JFrame,而是创建了多个框架类和一个动作类。我目前无法在我创建的测试框架上显示图像。我的代码可以编译,但是当我单击框架时它会关闭。谢谢!

P.S 这只是我的代码的一部分。听说把总代码发到网上不好。

代码:

    public void testframe()
    testframe = new Frame("Main Menu");
    testframe.setSize(1600,1600);
    try
        myPicture = ImageIO.read(new File("basic.png"));
    
    catch(IOException e)
        e.printStackTrace();

        //FirstFrame.setVisible(true);
        //testframe.setVisible(false);
    

    JLabel picLabel = new JLabel(new ImageIcon(myPicture));

    testframe.add(picLabel);

    //testframe.drawImage(myPicture,"png", );

    testframe.setVisible(true);



private void showButtonDemo()

    Font myFont = new Font("Serif", Font.ITALIC | Font.BOLD, 12);
    Font newFont = myFont.deriveFont(50F);
    headerLabel.setText("SNAKE GAME"); 
    headerLabel.setFont(newFont);
    statusLabel.setText("By Tejas and Ashwin");
    statusLabel.setFont(newFont);

    Button startButton = new Button("Start Game");//begins game
    Button snakecolorButton = new Button("Choose Snake Color");//selects snake color
    Button themeColorButton = new Button("Choose Theme");//selects two colors(1 primary and 1 secondary)
    Button InstructionsButton = new Button("Instructions");
    Button testbutton = new Button("test");

    testbutton.addActionListener(new ActionListener()
        public void actionPerformed(ActionEvent e)
            //testframe();
            //testframe.setVisible(true);
            FirstFrame.setVisible(false);
        
    );

【问题讨论】:

发布minimal reproducible example 以获得最佳帮助。 为什么要使用 AWT 组件,例如 Frame 和 Button Swing组件? 这对我来说更容易,因为我没有完全理解所有的 Swing 和 AWT 组件。这不是一个最小的、完整的和可验证的例子吗?我应该如何添加? 请阅读MCVE链接 Swing 组件名称以J 开头(JFrameJButton 等)。 AWT 组件(FrameButton 等)较旧,一般不应再使用。 【参考方案1】:

首先,共享代码是需要帮助的,所以如果你认为代码无论如何都涉及到你需要帮助的内容,那么就不要紧了…… 对于手头的问题,您可以使用 jlable 并为其设置 iamge 以显示 png,但这样做的最佳方法是为游戏创建此内容是创建一个类(例如 Player)和一个渲染方法,在渲染时,您会在播放器的位置 (XYZ) 显示图像,

ImageIcon image = new ImageIcon("C:\\Users\\Name\\Pictures\\image.png");
    JLabel imageLabel = new JLabel(image); 
    frame.add(imageLabel);

记得将其设置为可见并设置其边界,

【讨论】:

“记得将其设置为可见” 这仅对***窗口如JFrame 需要,并且应在添加所有组件和pack() 后完成已被称为“并设置其界限” ..并且设置界限很少可取。

以上是关于使用 java.awt 和 java.swing 获取要在框架上显示的 file.png 图像的主要内容,如果未能解决你的问题,请参考以下文章

java swing的可输入可多选的下拉框

java swing两个内容切换

java swing 日历控件怎么实现 最好是源码

Java界面编程—API

Java图形界面编程

GUI( 图形用户界面)