是否可以在Nvidia 3D Vision硬件上运行Java3D应用程序?
我有一个可以在立体3D中运行的现有Java3D应用程序.在过去,我总是使用OpenGL渲染器和四缓冲立体声在Quadro卡上运行应用程序.
我现在可以使用nVidia 3D Vision系统(带有GeForce GTX 460M)的笔记本电脑.从文档中可以看出,如果我使用DirectX绑定并让nVidia驱动程序处理立体声,应该可以在立体声中运行我的应用程序,但是,似乎并非如此.
如果我使用j3d.rend = d3d运行Java3D应用程序,则nVidia 3D Vision API似乎不会将其识别为DirectX应用程序.
如何让nVidia 3D Vision驱动程序检测Java3D应用程序并以立体3D渲染?
为什么Java中的MouseEvents在键和鼠标按钮之间共享修饰符?
考虑一下,下面简单的代码:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800,600);
frame.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println(e);
}
});
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
如果在窗口中单击三次(左键单击一次,中键单击一次,右键单击一次),您将看到以下输出.
java.awt.event.MouseEvent[MOUSE_CLICKED,(165,149),absolute(165,149),button=1,modifiers=Button1,clickCount=1] on frame0
java.awt.event.MouseEvent[MOUSE_CLICKED,(292,228),absolute(292,228),button=2,modifiers=Alt+Button2,clickCount=1] on frame0
java.awt.event.MouseEvent[MOUSE_CLICKED,(293,228),absolute(293,228),button=3,modifiers=Meta+Button3,clickCount=1] on frame0
Run Code Online (Sandbox Code Playgroud)
如果你看,你会注意到所有中间点击都被报告为关闭了alt键,并且所有右键点击都被报告为关闭了Meta键.这是有据可查的,并且在Javadocs中甚至有一行提到MouseEvent,提到了这种重叠.但我的问题是,为什么报道这样?从中间点击e.isAltDown()返回true背后的原因是什么?
这使得在某些平台上很难区分Alt + Button1和Button2.
同样,是否有任何"最佳实践"指南用于设计Java中的跨平台鼠标行为?
我正在尝试为我们的 Java 桌面应用程序创建一个自动错误报告工具。我们的想法是让客户在我们的应用程序崩溃时尽可能轻松地向我们发送错误报告。
使用 Desktop.mail API,我能够制作可以轻松编辑和从我们的用户发送的邮件,但我在几个平台上遇到系统限制(特别是大多数客户正在使用的 Windows 7 和 MS Outlook)
当我运行下面的示例代码时,您会注意到显示的电子邮件消息截断了包含的堆栈跟踪。我相信这与底层系统中命令行或 URI 的最大长度有关。
是否有更好的方法从不受此限制的错误报告中制作电子邮件?
import java.awt.Desktop;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URI;
import java.net.URLEncoder;
public class Scratchpad {
public static void main(String[] args) throws Exception {
try {
generateLongStackTrace();
} catch (Error e) {
URI uri = createMailURI(e);
// this will correctly pop up the system email client, but it will truncate the message
// after about 2K of data (this seems system dependent)
Desktop.getDesktop().mail(uri);
}
}
// Will …Run Code Online (Sandbox Code Playgroud)