Tag: java

移动对象和计时器

我有一个屏幕,说500宽度和400高度,我有一个形状束vector。 比方说,vector有两种不同的形状。 我希望物体从屏幕底部随机popup,达到一定的上升,然后再下降(类似于游戏水果忍者,水果是我的形状)。 在我的主要(视图)我有一个形状的向量我实例化计时器,添加到数组,并使用翻译function将它们放置在屏幕的button。 我的计时器需要一个动作监听器,它基本上改变了形状的平移,直到上升然后下降,但是我的问题是所有的形状都是同时开始的。 像这样的东西: Shape f = new Shape(new Area(new Ellipse2D.Double(0, 50, 50, 50))); f.translate(0, 400); f.timer = new Timer( 10 , taskPerformer); f.timer.start(); vector.add(f); Shape f2 = new Shape(new Area(new Rectangle2D.Double(0, 50, 50, 50))); f2.translate(200, 400); f2.timer = new Timer( 10 , taskPerformer); f2.timer.setInitialDelay(5000); f2.timer.start(); vector.add(f2); 和我的行动听众: Random generator = new Random(); […]

ConcurrentModificationException,尽pipe使用同步

public synchronized X getAnotherX(){ if(iterator.hasNext()){ X b = iterator.next(); String name = b.getInputFileName(); … return b; } else{return null;} } 尽pipe在声明头文件中有synchronized语句,但是我仍然在我使用iterator.next()的那一行得到一个ConcurrentModificationExceptionexception。 这里怎么了?

Javax.swing定时器重复正常,但ActionListener不做任何事情

我想在文本字段中闪烁背景颜色。 我的计时器设置如下: Flash flash = new Flash(); //set up timer tmr = new javax.swing.Timer(1000, new Flash()); tmr.addActionListener(flash); tmr.setInitialDelay(0); tmr.setRepeats(true); tmr.start(); 我的actionListener如下所示: static class Flash implements ActionListener { public void actionPerformed(ActionEvent evt) { if (flasher) { SpreademPanel.historyPnl.NameTxt.setBackground(Color.white); } else { SpreademPanel.historyPnl.NameTxt.setBackground(Color.pink); } flasher = !flasher; } //actionPerformed } //Flash 现在,当我把这个进行debugging并且遵循这个动作的时候,程序会重复地通过闪存并且在这两个select之间切换。 但在屏幕上,只有第一个切换发生。 之后,尽pipe闪光仍在运作,但没有任何行动。 这里有什么问题? 在此先感谢您的帮助。

如果我省略了Java中的大括号可以吗?

我find了这个,但找不到答案,无论出于何种原因,我都很惭愧地问教授,因为这种感觉,当数百人盯着你时… 无论如何,我的问题是括号的重要性是什么? 我可以忽略它们吗? 例: for (int i = 0; i < size; i++) { a += b; } VS for (int i = 0; i < size; i++) a += b; 我知道他们两个都会工作,但是如果我省略括号(我倾向于做很多,由于能见度),这会改变什么,什么都可以? 正如我所说,我知道它是有效的,我testing了十几次,但是现在我的一些任务变得越来越大了,出于某种原因,我有一些非理性的恐惧,从长远来看,这是我的一些问题吗? 有理由担心吗?

Java从数组中删除重复项?

我应该阅读包含许多不同的电子邮件地址的文件,并使用数组打印出来。 问题是我需要消除重复的电子邮件。 我能够让我的try / catch工作,并打印出电子邮件地址。 但是,我不知道如何去除重复。 我没有理解散列码或如何使用Set 。 任何援助将不胜感激。 这是我到目前为止: import java.util.Scanner; import java.io.*; public class Duplicate { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); System.out.println("Enter file name: "); String fileName = keyboard.nextLine(); if (fileName.equals("")) { System.out.println("Error: User did not specify a file name."); } else { Scanner inputStream = null; […]

加载包含在jar中的资源

在我的应用程序中,我以这种方式加载资源: WinProcessor.class.getResource("repository").toString(); 这给了我: file:/root/app/repository (and I replace "file:" with empty string) 当我从IDE运行我的应用程序时,这工作正常,但是当我运行我的应用程序的jar: java -jar app.jar path变成: jar:/root/app.jar!/repository 有没有办法解决这个问题? 我将使用“存储库”目录名称来创build这个: ConfigurationContext ctx = (ConfigurationContext) ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryString, null); 以同样的方式,我会得到一个文件名(而不是一个目录),我会用这种方式: System.setProperty("javax.net.ssl.trustStore", fileNameString)

使用getResource()获取资源

我需要在java项目中获取资源图像文件。 我正在做的是: URL url = TestGameTable.class.getClass(). getClassLoader().getResource("unibo.lsb.res/dice.jpg"); 目录结构如下: unibo/ lsb/ res/ dice.jpg test/ …./ /* other packages */ 事实是,我总是得到文件不存在。 我尝试过很多不同的path,但是我无法解决这个问题。 任何提示?

如何在Java中启动/停止/重启一个线程?

我真的很难find一种方法来启动,停止和重新启动Java中的线程。 具体来说,我有一个类Task (当前实现Runnable )在文件Task.java 。 我的主应用程序需要能够在一个线程上启动这个任务,在需要的时候停止(杀死)线程,并且有时候杀死和重启线程。 我第一次尝试与ExecutorService但我似乎无法find一个方法,它重新启动一个任务。 当我使用.shutdownnow()任何未来调用.execute()失败,因为ExecutorService是“closures”… 那么,我怎么能做到这一点?

如何在Java中使用浮点数或浮点数来避免浮点精度错误?

我有一个非常烦人的问题,在Java中花了很长时间的花车或双打。 基本上这个想法是,如果我执行: for ( float value = 0.0f; value < 1.0f; value += 0.1f ) System.out.println( value ); 我得到的是: 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.70000005 0.8000001 0.9000001 我明白,浮动精度错误有一个积累,但是,如何摆脱这个? 我试图使用双打一半的错误,但结果仍然是一样的。 有任何想法吗?

Java中的“代码太大”编译错误

Java中的代码是否有最大的大小? 我写了一个超过10,000行的函数。 实际上,每一行都将一个值赋给一个数组variables。 arts_bag[10792]="newyorkartworld"; arts_bag[10793]="leningradschool"; arts_bag[10794]="mailart"; arts_bag[10795]="artspan"; arts_bag[10796]="watercolor"; arts_bag[10797]="sculptures"; arts_bag[10798]="stonesculpture"; 而编译时,我得到这个错误:代码太大 我如何克服这一点?