在我的Windows机器上,我的主硬盘驱动器上有字母C:和名称"Local disk".
要在Windows上列出Java中的驱动器号,File对象具有静态listRoots()方法.但我无法找到一种方法来获取Windows上的驱动器名称(而不是驱动器号).
有人曾尝试过这个吗?
有没有人曾尝试使用Swing构建一个合适的多缓冲渲染环境,在此环境中可以添加Swing用户界面元素?
在这种情况下,我有一个动画红色矩形绘制在背景上.背景不需要每帧更新,因此我将其渲染到BufferedImage上,并仅重绘清除矩形的先前位置所需的部分.请参见下面的完整代码,这扩展了以前的线程通过@trashgod给出的例子,在这里.
到现在为止还挺好; 流畅的动画,低CPU使用率,无闪烁.
然后我将JTextField添加到Jpanel(通过单击屏幕上的任何位置),并通过在文本框内单击来关注它.现在,清除矩形的先前位置会在每个光标闪烁时失败,请参见下图.
我很好奇是否有人知道为什么会发生这种情况(Swing不是线程安全的?图像是异步绘制的?)以及寻找可能解决方案的方向.
这是在Mac OS 10.5,Java 1.6上
JPanel重绘失败了http://www.arttech.nl/javaredrawerror.png
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
public class NewTest extends JPanel implements
MouseListener,
ActionListener,
ComponentListener,
Runnable
{
JFrame f;
Insets insets;
private Timer t = new Timer(20, …Run Code Online (Sandbox Code Playgroud) 假设我正在跟踪拖动手势.在我的事件处理程序中,我使用阈值来确定拖动何时导致操作.超过阈值时,我想指示拖动手势已完成.
我可以在文档中找到的唯一的事情就是这条线在这里:
如果在手势识别器当前正在识别手势时将此属性更改为"否",则手势识别器将转换为已取消状态.
所以:
if (translation.y > 100) {
// do action
[self doAction];
//end recognizer
sender.enabled = NO;
sender.enabled = YES;
}
Run Code Online (Sandbox Code Playgroud)
这有效,但看起来可能有一个更简洁的方式.
有没有人知道另一种表明手势已经以编程方式结束的方式?我希望像-end:生成具有状态的最终事件的方法UIGestureRecognizerStateEnded.
我一直在努力寻找运行我的Java应用程序的计算机的"描述".
我所追求的是在本地网络上宣传我的电脑时用于DNS的名称(下面屏幕截图中的"iMac Mattijs").
在Windows XP上,可以在此处找到此名称:控制面板 - >系统 - >计算机名称 - >计算机描述.

在Mac OS 10.6上,可以在此处找到此名称:系统首选项 - >共享 - >计算机名称
下面的方法没有提供我正在寻找的名称.看看这段代码:
System.out.println("COMPUTERNAME environment variable: " + System.getenv("COMPUTERNAME"));
try { System.out.println("localhost name: " + InetAddress.getLocalHost().getHostName()); }
catch (UnknownHostException e1) {}
try {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface thisInterface = interfaces.nextElement();
Enumeration<InetAddress> addresses = thisInterface.getInetAddresses();
System.out.println("* network interface: " + thisInterface.getDisplayName());
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
System.out.println(" - address: " + address.getCanonicalHostName());
}
}
} catch (SocketException e) {} …Run Code Online (Sandbox Code Playgroud)