Tag: swing

图像在鼠标框架中没有新鲜点击在Java中

第一次在三个不同arrays的Jframe上显示三个随机图像。 甚至触发了MouseClicked方法,但帧中没有刷新图像。 我想每次点击Frame时刷新三个随机图像。 请帮忙 import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Random; import javax.swing.*; public class Cards extends JFrame implements MouseListener { public static void main(String[] args) { JFrame frame = new Cards(); frame.setTitle(“Cards”); frame.setSize(500, 500); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); new Cards(); } public Cards() { this.getContentPane().addMouseListener(this); cards1(); cards2(); cards3(); } public void cards1() […]

combobox选择不会在新窗口中加载/初始化类

在底部看到更新!! 我试图弄清楚如何做这几天,但到目前为止我没有运气。 基本上我想要做的是有一个combobox,当选择一个选项时, 加载一个小程序,并将值传递给小程序。 这是ComboBox类的代码,它应该在新窗口中打开另一个类。 另一个类是applet的主类。 它们都在同一个项目中但在不同的包中。 我知道其余代码没有任何错误。 //where I evaluate the selection and then open SteadyStateFusionDemo // more selections just showing one code block combo.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent ie){ String str = (String)combo.getSelectedItem(); if (str.equals(“NSTX”)) { machine = “A”; JFrame frame = new JFrame (“MyPanel2”); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); SteadyStateFusionDemo d = new SteadyStateFusionDemo(); frame.getContentPane().add […]

多个单选按钮的动作侦听器

我打算编写一个程序,让用户可以选择8 * 8矩阵。 因为我的声望低于10,所以我不能包含图像,但请放心,它只是一个普通的8 * 8矩阵。 我计划在我的Java程序中用8 * 8 = 64个单选按钮将其可视化。 用户一次只能选择一个单选按钮,这意味着所有64个按钮将属于同一个按钮组。 现在,我该如何管理动作监听器? 为64个单选按钮中的每一个设置64个独立的动作监听器是不可能的(真的很烦人和无聊)。 因为所有64个单选按钮都在同一个按钮组中,有什么办法可以设置一个事件监听器来检查选择了哪个按钮? 如果我的任何信息不清楚,请告诉我:) PS :我正在使用Netbeans设计工具

真的不可能在运行时删除任何JDialog或JWindow

正如我所尝试的那样,看起来那是不可能的,没有成功,因为我尝试过,或者存在另一种方式? import java.awt.*; import java.awt.event.WindowEvent; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; public class SuperConstructor extends JFrame { private static final long serialVersionUID = 1L; private int i = 1; private boolean runProcess; private int top = 20; private int left = 20; public SuperConstructor() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setPreferredSize(new Dimension(300, 300)); setTitle(“Super constructor”); setLocation(150, 150); pack(); setVisible(true); […]

JLabel在睡觉前没有出现

我正在研究一个简单的Swing程序,它在框架上放置一个标签,睡眠一秒钟,然后在框架上放置另一个标签,如下所示: import javax.swing.*; import java.util.concurrent.*; public class SubmitLabelManipulationTask { public static void main(String[] args) throws Exception { JFrame frame = new JFrame(“Hello Swing”); final JLabel label = new JLabel(“A Label”); frame.add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 100); frame.setVisible(true); TimeUnit.SECONDS.sleep(1); SwingUtilities.invokeLater(new Runnable() { public void run() { label.setText(“Hey! This is Different!”); } }); } } 但是,我无法在睡眠前看到屏幕上的第一个标签。 睡觉时屏幕是空白的。 之后,我看到了原始标签的瞬间,然后是最后的标签“嘿!这是不同的!” 在屏幕上。 […]

invokeLater vs invokeAndWait with JTextArea

我有一个在多个线程上运行的Swing应用程序,我在EDT上创建了Swing组件。 Executor启动线程,在某些时候将文本插入JTextArea。 但是,与InvokeAndWait不同,InvokeLater并不总是执行追加。 当我收集它时,它是异步的,非阻塞的,但仍然应该进行追加。 怎么会这样? 谢谢

Java旋转图像变成背景黑色的一部分

当我尝试旋转图像时,看起来背景的一部分变黑(我的图像是透明的) 背景白色 背景的一部分变黑 这是旋转图像的代码: public BufferedImage rotate(int height, int width, BufferedImage originalImg, int angle) { BufferedImage rotateImage = null; try { rotateImage = new BufferedImage(height, width, BufferedImage.TYPE_INT_RGB); AffineTransform a90 = AffineTransform.getRotateInstance(Math.toRadians(angle), height / 2, width / 2); AffineTransformOp op90 = new AffineTransformOp(a90, AffineTransformOp.TYPE_BILINEAR); op90.filter(originalImg, rotateImage); } catch (Exception e) { System.err.println(e); } return rotateImage; }

Java Swing:将鼠标hover在矩形上时,光标响应非常慢

下面是用户将鼠标光标移动到一堆矩形上的代码,光标应该在矩形上方变为手形光标,并在不在给定矩形顶部时恢复为默认正常光标。 问题:解决方案有效,但速度很慢。他们有很多方法可以“给猫皮肤”,因此我们可以在很多方面对问题进行建模,解决方案可以是各种各样的,但不变的是,我们必须循环每个矩形使用迭代器并使用contains()方法确定JPanel上的给定点是否确实在矩形内,并相应地更改光标。 就像需要实现声音一样简单,即在hover在特定矩形上时更改光标,程序开始变慢,因为我添加了不同的形状和更多的矩形。 下面的代码简单地显示了与x轴对齐的矩形和与y轴对齐的矩形。我将它们 (仍然可以将它们组合成一个列表)分成两个矩形列表。我用一个while循环迭代两个列表另一个,每个都在适当的地方使用break关键字。 我避免只使用一个大型列表来保存两种类型的矩形(或不同类型的形状),因为 我需要每隔一段时间添加不同的形状,并且它更好,更易读,可以在自己的列表中分类不同的形状。 我本能地试图通过对不同的形状使用不同的列表来缩短漫长的过程, 如果可能的话 ,只迭代正确的列表而不是迭代其他不必要的形状。一个大的列表将线性增长并迭代***所有塑造***以一直***到正确的***。***一个大的列表似乎不是一个如此聪明的实现? 希望尽我所能避免One-Large-List的努力不是过早优化的情况!!!这一点我认为使用线程同时或同时循环遍历不同的列表但是一个线程行为不端。 那么,我将形状分类在不同的List中,因为下面的示例有两个Lists.but这个技巧也失败了,因为我必须按顺序遍历每个列表。所以我在另一个列表中有一个while循环。我没有避免迭代不必要的列表,因为一个循环必须在另一个循环中(或者从另一个循环开始),那么内循环(或后面的循环)会支付过度的性能开销,因为如果我们可以事先确定一个形状属于一个形状,那么第一个循环是完全没有必要的。手上的某个组。请注意,确定鼠标光标是否hover在属于圆形列表或矩形列表的形状上,是我们事先需要知道的! 这样我们就可以遍历特定的列表。 它甚至变得更好,如果在这一点上你仍然可以按照我的推理, 事先知道哪个List属于一个必须在没有contains()方法的情况下完成,因为在List 内部迭代时要使用contains()! ! 总而言之,下面的代码只是两个列表上的线性迭代。 要访问第二个List,你必须通过第一个。有没有办法可以先通过迭代第一个列表? 如果我所有的解释和探索都是错误的并且没有意义。 题。 那么,如何改进下面代码的光标响应。 编辑 很抱歉发布了无法编译的代码,我已经从这个代码片段开始,并且正在玩我的新玩具,称为线程,直到我最终将自己绑在一个我无法解开的结中。真相是我选择的线程,因为我希望选择矩形并使用setRect()方法移动它们。我设想在预定的运动中移动各种形状,即仿射转换可能需要线程,因为我的绘画,重新绘制,搜索和各种努力工作从一些multithreading中受益。总之,下面的代码编译,光标响应实际上是好的! 。哎哟! 我有一个类似的实现,但可能它的缓慢是由绘制矩形的其他类引起的,不像在这个SSCCE中,它们由for循环绘制。 同时,如果有人有办法通过线程获得这种良好的性能,那将非常感激。谢谢提前。 import java.awt.Color; import java.awt.Cursor; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.*; […]

为什么JOptionPane.getValue()继续返回uninitializedValue

以下是我的代码 public static void main(String args[]){ JOptionPane pane = new JOptionPane(); pane.showInputDialog(null, “Question”); Object value = value.getValue(); System.out.println(value.toString()); –> this will print out uninitializedValue } 我基本上想要检测用户何时单击JOptionPane中的取消以及用户何时关闭JOptionPane

必须在EDT中调用AWT类中的所有方法,即非Swing方法吗?

我最近了解到Sun的/ Oracle最新指南说,任何Swing对象(包括构造函数)的Swing方法都不能在EDT之外调用。 相同的严格标准是否也适用于所有“视觉”AWT课程? 如果没有,**对他们来说是什么规则? 后来 re Swing和EDT:2009年的讨论。 http://www.velocityreviews.com/forums/t707173-why-does-jdk-1-6-recommend-creating-swing-components-on-the-edt.html 引用:“除了实际的线程安全性以及可见性和同步等相关问题之外,我认为还有软件问题。Swing组件通常具有某种类型的”监听器“,而这些监听器设计为在EDT上执行。 由于这些侦听器是异步的并且响应事件(如属性更改),因此在构建GUI时可能会触发这些侦听器。 结果是,当您在主线程中构建时,某些侦听器正在EDT上执行,并且一些侦听器也可能在其他线程上运行(因为侦听器混淆并在错误的线程上触发)。 结果是一个巨大的不可预测的混乱。“ 也许他们不知道他们在谈论什么……但目前我采取的是“更安全而不是抱歉”的方法。 Potochkin, http: //weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html似乎也认为我们熟悉后来更严格的规则