Tag: java 5

使用面板消息/解决方法时,Java 1.5 JOptionPane绘制错误?

我在一个针对Java 1.5的应用程序中有一个带有自定义消息面板的JOptionPane。 该面板包含JTextField等。 每20个调用左右,对话框中的任何内容都不会被绘制(甚至没有OK / Cancel按钮)。 如果我将对话框从屏幕拖出并再次返回以强制重新绘制,则组件可以按预期显示,除了绘制问题之外,组件响应正常。 这是我可以展示这个bug的最小例子: public class BugTest { public static void main(String args[]) { SwingUtilities.invokeLater(new Runnable() { public void run() { // The text field needs to be wrapped in a panel for the bug to show up. JPanel messagePanel = new JPanel(); // A JLabel won’t exhibit the bug, but […]

Java:包装Java 1.5和1.6代码的最简单方法

我想打包一段绝对必须在Java 1.5上运行的代码。 如果VM是1.6 VM,则代码的一部分可以“增强”程序。 基本上这是这个方法: private long[] findDeadlockedThreads() { // JDK 1.5 only supports the findMonitorDeadlockedThreads() // method, so you need to comment out the following three lines if (mbean.isSynchronizerUsageSupported()) return mbean.findDeadlockedThreads(); else return mbean.findMonitorDeadlockedThreads(); } 什么是最简单的方法在1.5上进行编译 ,然后在1.6时进行1.6方法调用 ? 在过去,我通过编译一个独特的1.6类来做类似的事情,我将使用我的应用程序打包并在1.6上使用ClassLoader实例化(因为1.6 JVM非常适合混合0x32和0x31类),但我认为这是一个有点矫枉过正(有点痛苦,因为在构建过程中你必须构建0x31和0x32 .class文件)。 如果我想在1.5上编译上述方法,我该怎么办? 也许使用reflection然后如何(我对reflection我根本不熟悉) 注意:如果你很好奇,上面的方法来自这篇文章: http : //www.javaspecialists.eu/archive/Issue130.html (但我不想像在文章中那样“评论三行”,我想要在1.5和1.6上编译和运行)

使用mouseDrag滚动时暂时禁用或阻止重新绘制JViewPort

我编写了一个如下定义的MouseListener ,以便我可以移动JButton来重新排序JPanel的组件。 JPanel位于JScrollPane因此当添加多个组件时,可以滚动它们。 我遇到的问题是,当拖动组件并且鼠标离开滚动窗格/视口时,组件将快照回到它在JPanel位置,然后将在正确的位置绘制。 我认为这种行为是由于当我调用scrollRectToVisible()时,Viewport调用其子项的重绘 有没有办法可以防止这种情况发生? 请注意,我仅限于Java 5 倾听者 import java.awt.Component; import java.awt.Container; import java.awt.MouseInfo; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import javax.swing.JViewport; import javax.swing.SwingUtilities; import javax.swing.event.MouseInputAdapter; public class DragListener extends MouseInputAdapter { private Point location; private MouseEvent pressed; private MouseEvent dragged; private MouseEvent dropped; @Override public void mousePressed(MouseEvent me) { pressed = me; } […]

Java Swing中的弹出窗口

有人可以建议我如何在Java Swing中实现弹出窗口。 我希望弹出窗口是一个模态窗口(弹出窗口打开时用户无法返回主窗口)。 我尝试使用JDialog,但它只允许一个小部件用于用户输入,而我需要多个小部件。 我可能在这里错了,但这是我能够做到的。 感谢你的帮助。

如何将javax.annotation.Generated添加到Java SE 5?

我正在开发一个必须在Java SE 5和Java SE 6上运行的项目。我最近开始使用一个工具将@Generated注释添加到生成的代码中,我想保留这些注释。 看起来javax.annotation.Generated在Java 5 EE和Java 6 SE及更高版本中 ,但不在Java 5 SE API中。 将javax.annotation.Generated发送给客户时,最好的方法是什么,所以它可以在Java SE 5和Java SE 6上运行而没有任何问题? 我只需要包含一个额外的jar文件吗? 如果是这样,@ @Generated居住的是哪一个?

在Java 1.7上编译Java 1.5仍然有效吗?

我最近在我的一个项目中转到Java 7。 我声称它可以在Java 1.5上运行,因为我在Java 6或7中没有任何依赖。但是在今天编译时我注意到了这一点: bootstrap class path not set in conjunction with -source 1.5 谷歌发现这个警告的信息很少。 这是否意味着您无法从Java 1.7编译为Java 1.5?

自Java 5以来最好的单例模式

从Java 5开始,据说创建单例的最佳方法是使用单元素枚举类型。 例: public enum SuperSingleton implements Zooma{ INSTANCE; /** */ public void fightTheBattle(){ System.out.println(“I am fighting the battle!!!”); } @Override public void runningWild() { //This is method implemented from the Zooma interface. } } 根据Joshua Bloch的说法,单元素枚举单例是; 更简洁 免费提供序列化机器 并提供反对多实例化的铁定。 我可以看到它是如何更简洁,它如何提供反对多实例化的铁定, 但它如何免费提供序列化机制? 作为一个枚举,这是单身人士得到的东西吗?

是否可以使用JDK 1.6构建java代码以在JRE 1.5上运行?

在使用JDK 1.6编译时,是否可以选择构建在JRE 1.5上运行的Java代码? PS:我是Java新手。

Mockito isA(Class clazz)如何解决类型安全问题?

在我的测试中我有以下几行: when(client.runTask(anyString(), anyString(), isA(Iterable.class)).thenReturn(…) isA(Iterable.class)产生警告,它需要未经检查的转换以符合Iterable 。 这是什么语法? isA(Iterable.class) isA((Iterable)Iterable.class 不工作。 有什么建议么?

如何根据条件禁用TestNG测试

目前有一种方法可以根据条件禁用TestNG测试 我知道你当前可以在TestNG中禁用测试: @Test(enabled=false, group={“blah”}) public void testCurrency(){ … } 我想根据条件禁用相同的测试,但不知道如何。 像这样的东西: @Test(enabled={isUk() ? false : true), group={“blah”}) public void testCurrency(){ … } 任何人都知道这是否可行。