使用 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
开头(JFrame
、JButton
等)。 AWT 组件(Frame
、Button
等)较旧,一般不应再使用。
【参考方案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 图像的主要内容,如果未能解决你的问题,请参考以下文章