- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个简单的点击器类型的游戏。问题是,我的 JPanel 忽略了我设置为每秒更新的 Swing 计时器,而是每毫秒更新一次,即使我删除了计时器也是如此。除了计时器的监听器之外,不会在任何地方调用 Repaint,因此 JPanel 会在没有我的指示的情况下重新绘制自身,有谁知道为什么会发生这种情况?
public GameGUI() {
sectors.add(new Sector());
add(recourseMonitor);
recourseMonitor.setOpaque(false);
recourseMonitor.setFocusable(false);
add(buyHShip);
buyHShip.setToolTipText("Extracts Hydrogren directly from the core of a star.");
buyHShip.addActionListener(this);
add(buyCShip);
buyCShip.setToolTipText("Extracts Carbon from indigenous lifeforms.");
buyCShip.addActionListener(this);
add(buyIShip);
add(buyUShip);
buyUShip.setToolTipText("Extracts Uranium from nuclear waste leftovers.");
buyUShip.addActionListener(this);
buyIShip.setToolTipText("Strip mines nearby planets for Iron.");
buyIShip.addActionListener(this);
add(buyAShip);
buyAShip.setToolTipText("Collects Antimatter from the fabric of the universe.");
buyAShip.addActionListener(this);
add(buyCookieShip);
buyCookieShip.setToolTipText("Rips holes in the space-time continuum to "
+ "bring back cookies from an ancient civilization.");
buyCookieShip.addActionListener(this);
add(buyTShip);
buyTShip.addActionListener(this);
add(cashButton);
cashButton.addActionListener(this);
add(sellHplus);
sellHplus.addActionListener(this);
add(sellCplus);
sellCplus.addActionListener(this);
add(sellIplus);
sellIplus.addActionListener(this);
add(sellUplus);
sellUplus.addActionListener(this);
add(sellAplus);
sellAplus.addActionListener(this);
add(sellCookieplus);
sellCookieplus.addActionListener(this);
add(sellHminus);
sellHminus.addActionListener(this);
add(sellCminus);
sellCminus.addActionListener(this);
add(sellIminus);
sellIminus.addActionListener(this);
add(sellUminus);
sellUminus.addActionListener(this);
add(sellAminus);
sellAminus.addActionListener(this);
add(sellCookieminus);
sellCookieminus.addActionListener(this);
add(hBeingSold);
add(cBeingSold);
add(iBeingSold);
add(uBeingSold);
add(aBeingSold);
add(cookiesBeingSold);
if (debug == true) {
add(testButton);
testButton.addActionListener(this);
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
buyHShip.setText("[" + sectors.get(0).getStation().gethShip() + "] "
+ "Buy Hydrogen Extractor: " + hPrice);
buyCShip.setText("[" + sectors.get(0).getStation().getcShip() + "] "
+ "Buy Carbon Miner: " + cPrice);
buyUShip.setText("[" + sectors.get(0).getStation().getuShip() + "] "
+ "Buy Uranium Miner: " + uPrice);
buyIShip.setText("[" + sectors.get(0).getStation().getiShip() + "] "
+ "Buy Iron Miner: " + iPrice);
buyAShip.setText("[" + sectors.get(0).getStation().getaShip() + "] "
+ "Buy Antimatter Collector: " + aPrice);
buyCookieShip.setText("[" + sectors.get(0).getStation().getcChip() + "] "
+ "Buy Cookie Drone: " + cookiePrice);
buyTShip.setText("[" + sectors.get(0).getStation().gettShip() + "] "
+ "Buy Trading Ship: " + tradePrice);
hBeingSold.setText("Hydrogen being sold: " + tradeH);
cBeingSold.setText("Carbon being sold: " + tradeC);
iBeingSold.setText("Iron being sold: " + tradeI);
uBeingSold.setText("Uranium being sold: " + tradeU);
aBeingSold.setText("Antimatter being sold: " + tradeA);
cookiesBeingSold.setText("Cookies being sold: " + tradeCookie);
recourseMonitor.setText("Space Cash: " + spaceCash
+ "\nEnergy: " + energy
+ "\nHydrogen: " + hydrogen
+ "\nCarbon: " + carbon
+ "\nUranium: " + uranium
+ "\nIron: " + iron
+ "\nAntimatter: " + antimatter
+ "\nCookies: " + cookies);
drawItems(g);
playGame();
}
public void drawItems(Graphics g) {
super.paintComponent(g);
recourseMonitor.setLocation(5, 0);
buyHShip.setLocation(getWidth() - buyHShip.getWidth(), 0);
buyCShip.setLocation(getWidth() - buyCShip.getWidth(), buyCShip.getHeight() * 2);
buyIShip.setLocation(getWidth() - buyIShip.getWidth(), buyIShip.getHeight() * 4);
buyUShip.setLocation(getWidth() - buyUShip.getWidth(), buyUShip.getHeight() * 6);
buyAShip.setLocation(getWidth() - buyAShip.getWidth(), buyAShip.getHeight() * 8);
buyCookieShip.setLocation(getWidth() - buyCookieShip.getWidth(), buyCookieShip.getHeight() * 10);
buyTShip.setLocation(getWidth() - buyTShip.getWidth(), buyTShip.getHeight() * 12);
cashButton.setLocation(getWidth() / 2 - cashButton.getWidth() / 2, 10);
testButton.setLocation(getWidth() / 2 - testButton.getWidth() / 2, testButton.getHeight() + 20);
sellHplus.setLocation(5, 200);
hBeingSold.setLocation(sellHplus.getWidth() + 20, 200);
sellHminus.setLocation(sellHplus.getWidth() + hBeingSold.getWidth() + 40, 200);
sellCplus.setLocation(5, 250);
cBeingSold.setLocation(sellCplus.getWidth() + 20, 250);
sellCminus.setLocation(sellCplus.getWidth() + cBeingSold.getWidth() + 40, 250);
sellIplus.setLocation(5, 300);
iBeingSold.setLocation(sellIplus.getWidth() + 20, 300);
sellIminus.setLocation(sellIplus.getWidth() + iBeingSold.getWidth() + 40, 300);
sellUplus.setLocation(5, 350);
uBeingSold.setLocation(sellUplus.getWidth() + 20, 350);
sellUminus.setLocation(sellUplus.getWidth() + uBeingSold.getWidth() + 40, 350);
sellAplus.setLocation(5, 400);
aBeingSold.setLocation(sellAplus.getWidth() + 20, 400);
sellAminus.setLocation(sellAplus.getWidth() + aBeingSold.getWidth() + 40, 400);
sellCookieplus.setLocation(5, 450);
cookiesBeingSold.setLocation(sellCookieplus.getWidth() + 20, 450);
sellCookieminus.setLocation(sellCookieplus.getWidth() + cookiesBeingSold.getWidth() + 40, 450);
}
public void playGame() {
for (int i = 0; i < sectors.size(); i++) {
hIncome = sectors.get(i).getStation().gethShip() - tradeH;
cIncome = sectors.get(i).getStation().getcShip() - tradeC;
iIncome = sectors.get(i).getStation().getiShip() - tradeI;
uIncome = sectors.get(i).getStation().getuShip() - tradeU;
aIncome = sectors.get(i).getStation().getaShip() - tradeA;
cookieIncome = sectors.get(i).getStation().getcChip() - tradeCookie;
cashIncome = (tradeH * 5) + (tradeC * 20) + (tradeI * 100)
+ (tradeU * 500) + (tradeA * 1500) + (tradeCookie * 5000);
}
for (int i = 0; i < sectors.size(); i++) {
spaceCash += cashIncome;
energy += energyIncome;
hydrogen += hIncome;
carbon += cIncome;
iron += iIncome;
uranium += uIncome;
antimatter += aIncome;
cookies += cookieIncome;
}
}
这是代码(不包括 Action 监听器以及变量和按钮的初始化)。
最佳答案
绘画方法仅用于绘画:
setText(....)
之类的方法 setLocation()
等方法更改组件的属性将导致组件被重新绘制,这可能会导致无限循环。
不要在drawItems()方法中调用super.paintComponent()。除了在 PaintComponent() 方法中调用 super.paintComponent() 之外,永远不要直接调用绘画方法。
不应从paintComponent() 方法中调用playGame() 方法。这又是你的游戏的逻辑。该代码应该从控制游戏的计时器中调用。
关于java - JPanel GUI 正在 self 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768368/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!