Tag: 摇摆

如何使用线程暂停java中的执行

我以编程方式创建了一个向导。 它包含3个面板。 第二个是devicePane,第三个是detailsPane。 第三个面板由进度条组成。 我希望我的程序在显示第三个面板后启动一个函数process() ? 是否可以使用线程? else if(ParserMainDlg.this.POSITION==1){ if(sqlConnectionPane.executeProcess()==true){ devicePane.setDeviceList(); ParserMainDlg.this.POSITION++; fireStateChanged(oldValue); } } else if(ParserMainDlg.this.POSITION==2){ System.out.println(“position:”+ParserMainDlg.this.POSITION); if(devicePane.executeProcess()==true){ ParserMainDlg.this.POSITION++; fireStateChanged(oldValue); } 我希望sqlConnectionPane.executeProcess()调用一个在显示devicePane面板后开始执行的函数?

在java中更改特定的文本颜色

我想知道如何更改句子中的特定文本颜色? 让我们说HELLO WORLD …我想把世界改成红色而不改变HELLO的字体颜色。同样如何将WORLD改为粗体 我想将这些字符串设置为jtextarea但我能找到的就是这样的 JTextArea textbox = new JTextArea(“hello world”); textbox.setForeground(Color.red) 这些使整个句子变成红色而不是只让世界变成红色?

Swing,Java和multithreading以及着色按钮

是的,这是功课。 是的,我完全陷入困境。 这是要点。 我创建了一个JFrame。 有3个面板(顶部,中部,底部)。 在底部面板中有3个按钮,分别称为红色,绿色和蓝色。 在顶部面板中有3个文本字段,它们为我们提供了单击相应按钮的次数。 每个按钮允许的最大值为10。 在中间面板是一个8 x 8网格的Jbuttons编号从0到63.到目前为止,这么好。 每次我们点击一​​个按钮,线程就会启动。 没有线程死亡当线程启动时,随机选择0到63之间的数字。 对应于该数字的JButton被绘制为被点击的颜色。 因此,如果单击红色按钮,我们应该会看到一个白色背景的框变成红色。 但是那时JButton的颜色开始消失,直到变成白色。 这个过程大约需要8秒钟。 您创建的线程不应该有权访问任何Swing组件。 相反,必须维护数据结构并根据线程的执行周期进行更新。 另一方面,定期从主线程调用repaint()方法以邀请Swing Event Dispatcher线程最终访问数据结构的内容并相应地显示GUI组件。 ……..我已经创建并显示了所有对象。 您无法在按钮上单击超过10次。 我就在这里: 我有两个数组:一个是大小为64的字符串数组。它们代表按钮。 我也有一系列的整数。 这样我就知道了创建线程的顺序。 我已经创建了线程,因为单击了一个按钮,我已经启动了它们。 这是我的线程的run方法: public void run() { Random num = new Random(new Date().getTime()); while (true) { Thread j = Thread.currentThread(); int randInt = num.nextInt(64); synchronized (lock) { if […]

客户端/服务器Swing程序在使用线程时卡住了

我的Java程序有问题。 我有这个代码: Host.java : public class Host { protected static void start(JFrame window) { ServerSocket server = null; try { server = new ServerSocket(); SocketAddress addr = new InetSocketAddress(hostname, port); server.bind(addr); Socket socket = server.accept(); window.setVisible(false); Thread thread = new Thread(new Incomming(socket.getInputStream())); thread.start(); thread.join(); socket.close(); } catch (UnknownHostException e) { […] } } Incomming.java : […]

防止GUI冻结,并有按钮取消操作/终止线程

这是我想要做的: 我有一个包含JTextArea的JFrame ,显示正在进行的连接的更新。 如果用户想要取消连接,则应该能够将JButton按到它的右侧。 但是,由于连接在尝试连接时阻塞(使用)线程,因此GUI将被冻结。 我正在寻找快速解决方案。 将ActionListener放在一个单独的线程上可能吗? 虽然我可以基本使用runnables,但我对线程没有多少经验。 答案是否与使用EDT有关? 如果是这样,应如何实施? PS澄清一下,按钮应该可以杀死创建连接的线程。 看完后似乎是一个executorService。 可以帮忙吗? 是? 还是一点都不?

我的覆盖绘制方法没有被调用

我有一个JPanel,可以作为我游戏的HUD,当然,我已经覆盖了paint方法来做我自己的自定义显示,这确实被调用,但只有在resize或最大化时,最小化框架,而不是在我的游戏循环告诉它重绘()。 由于我的另外两个面板被重新绘制得很好,我觉得特别奇怪。 这是我的HUD课程: package base; import java.awt.Color; import java.awt.Graphics; import javax.swing.BoxLayout; import javax.swing.JPanel; public class HUD extends JPanel { private Shiphud[] shiphuds; public HUD(Ship[] ships) { shiphuds = new Shiphud[ships.length]; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); for (int i = 0; i < shiphuds.length; i++) { shiphuds[i] = new Shiphud(ships[i]); this.add(shiphuds[i]); } } @Override public void paint(Graphics g) […]

JPanel中的多个动画(线程)

我正在尝试用Java编写棋盘游戏。 我有11个class,包括Main。 Board类扩展了JPanel并绘制了板图像以及骰子图像。 类Player,它扩展了JCoponent并实现了Runnable(Thread)。 每个玩家实例都是一个典当动画,它正在全面移动。 玩家类在棋盘上绘制棋子。 图案 代码如何: Board b=new Board(); Player p=new Player(); b.add(p); JPanel panel=new JPanel(); panel.add(b); add(panel); //adding the panel to the frame. 问题是我不能在棋盘上同时拥有多个棋子。 我已经尝试在另一个类中重新绘制所有玩家(作为非动画),但它不起作用。 我也试过JLayeredPane,但也许我做错了。 不幸的是,我无法改变上述模式,所以不要提出这个建议。 预先感谢您的帮助。 PS:我不能发布任何代码,因为它的巨大。 PPS:如果你问我,会给出更多的澄清。 编辑:我改革了我的问题。 是否可以在同一个面板上同时拥有两个动画? 如果答案是肯定的..我可以这样做吗?

用Java重新连续重绘

我有一个使用线程的Java程序。 在我的run方法中,我有: public void run() { while(thread != null){ repaint(); System.out.println(“hi”); try { Thread.sleep(1000); } catch (InterruptedException e) { break; } } } public void paintComponent(Graphics g) { // painting stuff } 问题是执行了run方法,但是没有调用paintComponent部分。 如果这不是重新制作组件的正确方法,那么我应该如何重新绘制它呢?

Java 1.6中Java Swing App中的绘画问题

我正在研究一个Swing应用程序(目前运行在Java 1.6更新11上),它有一些间歇性的油漆刷新问题(例如有工件等)。 这只发生在我们应用程序的某些用户而不是其他用户。 在做了一些研究后,我发现将属性sun.java2d.d3d设置为false可能有所帮助,事实上,它对我们的一个用户有帮助。 现在其他一些用户都抱怨这个问题,我想把所有用户的属性设置为false 。 我的基本问题如下: 究竟是什么原因造成的? 是video卡吗? 是司机吗? 这是Sun的错误吗? (例如http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462)三者的组合? 换句话说,最好是简单地关闭此属性,还是只影响某些更新到最新驱动程序的video卡?

Java 3 Color Gradient

我有一个JPanel ,我想在其中绘制一个渐变。 我有下面的代码,但只绘制了2色渐变。 我想添加第3个但不知道如何。 我想要的是让面板的左上角为白色,右上角为红色,两个底角为黑色。 我需要做些什么来实现这一点,看起来像这样: package pocketshop.util; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JPanel; public class ColorPicker extends JPanel{ public ColorPicker(){ repaint(); } @Override public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; int w = getWidth(); int h = getHeight(); GradientPaint gp = new GradientPaint( 0, 0, Color.white, 0, h, […]