我在显示图像文件src/happyFace时遇到问题。gif,在我的javagui中。目标是显示一张笑脸的图像,它似乎以一定角度滑过程序窗口,从窗口边缘反弹。
我认为我的问题在于src/panel中的image变量(类型ImageIcon)。java,因为ImageIcon类可能与将来的swing版本不兼容(根据Oracle文档:https://docs.oracle.com/javase/7/docs/api/javax/swing/ImageIcon.html)。如果这是真的,我认为swing库可能不支持ImageIcon类。我不知道如何检查我的swing库。
src/happyFace。gif
我的输出窗口
SRC/Rebound.java:
//********************************************************************
// Rebound.java Java Foundations
//********************************************************************
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Rebound{
//-----------------------------------------------------------------
// Displays the main frame of the program.
//-----------------------------------------------------------------
public static void main (String[] args){
JFrame frame = new JFrame ("Rebound");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new ReboundPanel());
frame.pack();
frame.setVisible(true);
}
}
src/面板。爪哇:
//********************************************************************
// ReboundPanel.java Java Foundations
//
// Represents the primary panel for the Rebound program.
//********************************************************************
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ReboundPanel extends JPanel{
private final int WIDTH = 300, HEIGHT = 100;
private final int DELAY = 20, IMAGE_SIZE = 35;
private ImageIcon image;
private Timer timer;
private int x, y, moveX, moveY;
//-----------------------------------------------------------------
// Sets up the panel, including the timer for the animation.
//-----------------------------------------------------------------
public ReboundPanel(){
timer = new Timer(DELAY, new ReboundListener());
image = new ImageIcon ("happyFace.gif");
x = 0;
y = 40;
moveX = moveY = 3;
setPreferredSize (new Dimension(WIDTH, HEIGHT));
setBackground (Color.black);
timer.start();
}
//-----------------------------------------------------------------
// Draws the image in the current location.
//-----------------------------------------------------------------
public void paintComponent (Graphics page){
super.paintComponent (page);
image.paintIcon (this, page, x, y);
}
//*****************************************************************
// Represents the action listener for the timer.
//*****************************************************************
private class ReboundListener implements ActionListener{
//-----------------------------------------------------------------
// Updates the position of the image and possibly the direction
// of movement whenever the timer fires an action event.
//-----------------------------------------------------------------
public void actionPerformed (ActionEvent event){
x += moveX;
y += moveY;
if (x <= 0 || x >= WIDTH-IMAGE_SIZE)
moveX = moveX * -1;
if (y <= 0 || y >= HEIGHT-IMAGE_SIZE)
moveY = moveY * -1;
repaint();
}
}
}
在类中,
更改image=newimageicon(“happyFace.gif”)
到
Image=new ImageIcon("src/Happy yFace.gif");
请注意,这种解决方案只能用于测试目的。正如安德鲁·汤普森的评论所述,存储和加载图像的正确方法是使用嵌入式资源。
问题内容: Date.getTime()返回自1970年1月1日以来的毫秒数。Unixtime为自1970年1月1日以来的秒数。我通常不使用Java编写代码,但是我正在进行一些错误修复。我有: 有没有更好的方法来在Java中获取unixtime? 问题答案: 避免使用创建Date对象。除以1000将使你进入Unix时代。 如注释中所述,对于变量的类型,通常希望使用基元长(小写l长)而不是盒装对象长
我得到这个错误 Symfony\Component\Debug\Exception\fatalthrowable错误:传递给Illumb\Routing\Middleware\ThrottlereRequests::addHeaders()的参数1必须是Symfony\Component\HttpFoundation\Response的实例,给定为空, 当在Laravel 5.7的中间件中获取标题
通常在我的内部循环中,我需要以“环绕”的方式对数组进行索引,因此(例如)如果数组大小为100,并且我的代码要求元素-2,那么应该给它元素98。在许多高级语言(如Python)中,只需使用就可以做到这一点,但由于某种原因,C的整数算术(通常)向零舍入,而不是一致地向下舍入,因此当给定负的第一个参数时,其模运算符返回负结果。 通常我知道不会小于,在这些情况下,我只是做。然而,有时这不能保证,对于这些情
问题内容: 我如何获得年度的当前星期数,例如PHP的星期数? 它应该是ISO-8601的 星期数,从星期一开始的星期数。 问题答案: 在观察夏令时和1月1日是星期五的年份中,日期存在问题。通过使用所有UTC方法进行修复。以下代码将相同的结果返回给Moment.js。 创建“ UTC”日期时,小时为零。 最小化的原型版本(仅返回星期数): 测试部分 在本部分中,您可以输入YYYY-MM-DD格式的任
问题内容: 在java中如何加载一张图片? 问题答案: 首先,更改此行: 对此: 可以在此线程上找到有关这两种方法之间的区别的更多信息 - 加载资源的不同方法 对于Eclipse: 如何将图像添加到项目中的资源文件夹 对于NetBeans: 在Java GUI应用程序中处理图像 如何将图像添加到项目 对于IntelliJ IDEA: 右键单击项目的src文件夹。选择新建->包 在“ 新建软件包对话
问题内容: 众所周知,Java ArrayList是使用数组实现的,并以10的容量进行初始化,并将其大小增加50%。如何获得当前ArrayList的容量而不是ArrayList的大小。 谢谢 问题答案: 我认为这是不可能的。您的用例是什么?我相信C#ArrayLists具有属性,但是Java ArrayList类不会公开此信息。 您具有接受初始容量参数的构造函数,并且具有可用于减少增量重新分配量的