使用Java Generics为实体实现转换器

我正在使用Spring和Hibernate开发JSF项目,其中包括许多遵循相同模式的Converter : getAsObject接收对象id的字符串表示forms,将其转换为数字,并获取给定种类的实体和给定的id getAsString接收和实体并返回转换为String的对象的id 代码基本上如下(省略检查): @ManagedBean(name=”myConverter”) @SessionScoped public class MyConverter implements Converter { private MyService myService; /* … */ @Override public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value) { int id = Integer.parseInt(value); return myService.getById(id); } @Override public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value) { return ((MyEntity)value).getId().toString(); } } 鉴于大量的Converter与此完全相同(当然除了MyService和MyEntity的类型),我想知道是否值得使用单个通用转换器。 通用本身的实现并不困难,但我不确定声明Beans的正确方法。 可能的解决方案如下: 1 – […]

显示图像数据的直方图

我有时需要以直方图的forms显示图像数据的表示。 我对访问图像数据的方式特别感兴趣。 我熟悉JFreeChart ,其中包括直方图支持,但我会考虑其他方法。

用Java旋转数据和文本的坐标平面

我需要: 1.)移动原点并旋转坐标平面,使x值向右前进,y值从新原点向上进行(需要在下面的代码中为内部蓝色矩形的左下角)。 这将使我能够在下面的代码中绘制x,y坐标对的点。 2.)绘制数据图的y轴上的抽动标记的旋转标签。 下面的代码设置了这个问题。 它有效,除了两个问题: 1.)绘制数据点,左上角为原点,y值向下下降 2.)屏幕上没有绘制y轴上的标记标记 任何人都可以告诉我如何修复下面的代码,以便它修复这两个问题,并做上面第一段描述的内容? 代码在以下两个java文件中: DataGUI.java import java.awt.*; import java.util.ArrayList; import javax.swing.*; class DataGUI extends JFrame{ DataGUI() { super(“X,Y Plot”); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setPreferredSize(new Dimension(800, 400)); this.pack(); this.setSize(new Dimension(800, 600)); this.setLocationRelativeTo(null); setLayout(new GridLayout()); ArrayList myDiffs = new ArrayList(); myDiffs.add(25.0); myDiffs.add(9.0); myDiffs.add(7.0); myDiffs.add(16.0); myDiffs.add(15.0); myDiffs.add(6.0); myDiffs.add(2.0); myDiffs.add(8.0); myDiffs.add(2.0); myDiffs.add(27.0); myDiffs.add(14.0); myDiffs.add(12.0); myDiffs.add(19.0); myDiffs.add(10.0); […]

启用nimbus时,JDK7中无法透明且未修饰的JFrame

看这张图片 : 这是透明框架的代码: GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); if (!gd.isWindowTranslucencySupported(TRANSLUCENT)) { System.err.println( “Translucency is not supported”); System.exit(0); } JFrame.setDefaultLookAndFeelDecorated(true); 这很好但是在尝试通过添加启用LookAndFeel时 try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if (“Nimbus”.equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } }catch(…….) 它给了我这个错误 线程“AWT-EventQueue-0”中的exceptionjava.awt.IllegalComponentStateException:框架被修饰 这个错误是什么? 以及如何解决? 感谢您的回答和建议。 编辑 提问/ CrossPosted OTN Daniweb CodeRanch

如何在Java中获取受信任的根证书列表?

我希望能够在Java应用程序中以编程方式访问所有受信任的根证书。 我正在查看密钥库接口,但我希望得到JRE隐含的可信根列表。 这可以随处访问吗?

如何在Java中获取程序窗口的x和y?

有没有办法让我在java中获取窗口的X和Y值? 我读到我将不得不使用运行时,因为java不能直接混乱,但我不太清楚如何做到这一点。 谁能指出一些关于如何获得这个的链接/提示?

Java:“背后的语法和含义? 二进制/地址?

嘿, 我想弄清楚[B @前缀在java中意味着什么。 当我尝试打印字节数组时它们出来了。 但是,大小为32和大小为4的字节数组的长度相同。 始终“[@ B1234567”。 这是什么? 此外,它们具有仅打印hex值的属性。 我知道它不能只是二进制打印,因为会出现随机扩展的ascii字符。 下面是byte []到byte []哈希表映射打印的示例,其中映射由冒号分隔,这些是4字节键和32字节元素的字节数组。 [B@1ef9157:[B@1f82982 [B@181ed9e:[B@16d2633 [B@27e353:[B@e70e30 [B@cb6009:[B@154864a [B@18aaa1e:[B@3c9217 [B@20be79:[B@9b42e6 [B@16925b0:[B@14520eb [B@8ee016:[B@1742700 [B@1bfc93a:[B@acb158 [B@107ebe1:[B@1af33d6 [B@156b6b9:[B@17431b9 [B@139b78e:[B@16c79d7 [B@2e7820:[B@b33d0a [B@82701e:[B@16c9867 [B@1f14ceb:[B@89cc5e [B@da4b71:[B@c837cd [B@ab853b:[B@c79809 [B@765a16:[B@1ce784b [B@1319c:[B@3bc473

用Java截取网页截图

是否有免费工具可以读取给定的网页并截取它的屏幕截图?

拖动屏幕周围的jlabel

所以我试图在JFrame周围单击并拖动JLabel。 以下代码允许在屏幕上的任何位置按下/拖动鼠标时在屏幕上移动JLabel,但我不知道如何添加第二个ActionListener以检查鼠标是否在标签上单击,假设是解决方案。 我想在屏幕上有多个JLabel,以便移动的唯一标签是鼠标单击并正在拖动的标签。 谢谢。 import java.awt.*; import java.awt.event.*; import javax.swing.*; @SuppressWarnings(“serial”) public class test extends JFrame implements MouseMotionListener { private JPanel panel = new JPanel(null); private JLabel dragLabel = new JLabel(“drag test”); private int mouseX = 200; private int mouseY = 200; public test() { this.add(panel); panel.setBackground(Color.WHITE); panel.add(dragLabel); dragLabel.setForeground(Color.RED); dragLabel.setBounds(mouseX, mouseY, 100, 50); panel.addMouseMotionListener(this); } […]

整数缓存有多大?

类Integer具有缓存,缓存Integer值。 因此,如果我使用方法valueOf或inboxing,新值将不会被实例化,而是从缓存中获取。 我知道默认缓存大小为127但由于VM设置可以扩展。 我的问题是:在这些设置中缓存大小的默认值有多大,我可以操纵这个值吗? 这个值取决于我使用的是哪个VM(32位还是64位)? 我现在正在调整遗留代码,可能需要从int转换为Integer。 澄清:遵循我在Java源代码中找到的代码 private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty(“java.lang.Integer.IntegerCache.high”); if (integerCacheHighPropValue != null) { int i = parseInt(integerCacheHighPropValue); i = […]