Eclipse Indigo bug
问题描述:
我已经运行了几个月的Eclipse Indigo,并且遇到了一个我似乎无法找到答案的错误。我正在创建一个类似于马里奥,老塞尔达等的小型2D侧面滚轮游戏。Eclipse Indigo bug
我正要向我的父亲展示我的程序中添加了哪些新功能。我父亲决定不用上楼去看我的电脑上的节目,而是决定用一种我不确定的sudo屏幕查看功能进入它。我们之前已经使用过它,基本上它只是让您看到家中另一台计算机的屏幕(在相同的IP接口上),您也可以使用计算机。
我不想用这种方式向我父亲展示我的节目,所以我告诉他上楼。他做了,从那以后,eclipse不会在你的程序中显示任何JFrame中的图形。它会显示诸如单词(写在屏幕上)等内容,但不会显示任何图形。比如你的背景图片,或者你的角色,或者其他任何东西。我认为这不是我的编码问题,因为在我父亲做屏幕查看之前(我们都在linux mint 12,顺便说一句)之前,我测试过并玩过了好几次游戏。
我认为这个bug与屏幕查看有关。
我会喜欢它,如果我能得到一些帮助。任何一个都会很棒。谢谢。
- 这已经解决了 *
局
package External;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class Board extends JPanel implements ActionListener, Runnable {
Dude p;
Image img;
Timer time;
int v = 172;
Thread animator;
boolean a = false;
boolean done2 = false;
public Board() {
p = new Dude();
addKeyListener(new AL());
setFocusable(true);
ImageIcon i = new ImageIcon ("/home/clark/Desktop/Swindle_test_background.png");
img = i.getImage();
time = new Timer (3, this);
time.start();
}
public void actionPerformed(ActionEvent e) {
p.move();
repaint();
}
public void paint(Graphics g) {
if (p.dy == 1 && done2 == false)
{
done2 = true;
animator = new Thread(this);
animator.start();
}
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
if ((p.getX() - 590) % 2400 == 0)
p.nx = 0;
if ((p.getX() - 1790) % 2400 == 0)
p.nx2 = 0;
g2d.drawImage(img, 985-p.nx2, 0, null);
if (p.getX() >= 921)
g2d.drawImage(img, 985-p.nx, 0, null);
g2d.drawImage(p.getImage(), 75, v, null);
}
private class AL extends KeyAdapter {
public void keyReleased(KeyEvent e) {
p.keyReleased(e);
}
public void keyPressed(KeyEvent e) {
p.keyPressed(e);
}
}
boolean h = false;
boolean done = false;
public void cycle() {
if (h == false)
v--;
if (v == 125)
h = true;
if (h == true && v <= 172) {
v++;
if (v == 172) {
done = true;
}
}
}
public void run() {
long beforeTime, timeDiff, sleep;
beforeTime = System.currentTimeMillis();
while (done == false) {
cycle();
timeDiff = System.currentTimeMillis() - beforeTime;
sleep = 10 - timeDiff;
if (sleep < 0)
sleep = 2;
try {
Thread.sleep(sleep);
} catch (InterruptedException e) {
System.out.println("interrupted");
}
beforeTime = System.currentTimeMillis();
}
done = false;
h = false;
done2 = false;
}
}
哥们
package External;
import java.awt.Image;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
public class Dude {
int x, dx, y, nx2, nx, dy;
Image Swindle_Man_Right;
ImageIcon r = new ImageIcon("/home/clark/Desktop/Swindle_Man_Right.png");
ImageIcon l = new ImageIcon("/home/clark/Desktop/Swindle_Man_Left.png");
ImageIcon j = new ImageIcon("/home/clark/Desktop/Swindle_Man_Jump.png");
public Dude() {
Swindle_Man_Right = l.getImage();
x = 75;
nx2 = 685;
nx = 0;
y = 172;
}
public void move() {
x = x + dx;
nx2 = nx2 + dx;
nx = nx + dx;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Image getImage() {
return Swindle_Man_Right;
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT)
{ dx = -1;
Swindle_Man_Right = l.getImage();
}
if (key == KeyEvent.VK_RIGHT)
{dx = 1;
Swindle_Man_Right = r.getImage();
}
if (key == KeyEvent.VK_UP)
{dy = 1;
Swindle_Man_Right= j.getImage();
} }
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT)
dx = 0;
if (key == KeyEvent.VK_RIGHT)
dx = 0;
if (key == KeyEvent.VK_UP)
{dy = 0;
Swindle_Man_Right= r.getImage();}
}
}
框架
package External;
import javax.swing.*;
public class Frame {
public Frame() {
JFrame frame = new JFrame("Swindle [version 0.1.9]");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700,390);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
new Frame();
}
}
答
就我所知,你没有添加任何内容。
我更换了显卡,拥有我自己的,我能得到它运行...
public class Frame {
public static void main(String[] args) {
new Frame();
}
public Frame() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Swindle [version 0.1.9]");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// This is kind of important...
frame.add(new Board());
frame.setSize(700, 390);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
虽然我只给出代码一瞥,我会建议您不使用ImageIcon
加载图像,而是使用ImageIO
API。除了支持更多的图像格式之外,它在无法加载图像时会抛出更多的错误。
我也避免使用KeyListener
转而使用key bindings。他们不会遭受与KeyListener
**相同的焦点问题**非常感谢** MadProgrammer!事实证明,这是我的编码问题,尽管我对自己肯定不是。我想这意味着我应该更加开放自己的想法。您添加到我的** Frame **类中的内容使我的程序再次运行良好。你应得的饼干为你的惊人回应! – user2278779 2013-04-20 04:28:55