小编Mat*_*ijs的帖子

在Java中获取驱动器名称(而不是驱动器号)

在我的Windows机器上,我的主硬盘驱动器上有字母C:和名称"Local disk".

要在Windows上列出Java中的驱动器号,File对象具有静态listRoots()方法.但我无法找到一种方法来获取Windows上的驱动器名称(而不是驱动器号).

有人曾尝试过这个吗?

java windows

12
推荐指数
2
解决办法
2万
查看次数

JTextFields在JPanel上的活动绘图之上,线程化问题

有没有人曾尝试使用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)

java swing multithreading rendering buffering

10
推荐指数
1
解决办法
1万
查看次数

如何以编程方式结束/重置UIGestureRecognizer?

假设我正在跟踪拖动手势.在我的事件处理程序中,我使用阈值来确定拖动何时导致操作.超过阈值时,我想指示拖动手势已完成.

我可以在文档中找到的唯一的事情就是这条线在这里:

如果在手势识别器当前正在识别手势时将此属性更改为"否",则手势识别器将转换为已取消状态.

所以:

if (translation.y > 100) {
    // do action
    [self doAction];

    //end recognizer
    sender.enabled = NO;
    sender.enabled = YES;
}
Run Code Online (Sandbox Code Playgroud)

这有效,但看起来可能有一个更简洁的方式.

有没有人知道另一种表明手势已经以编程方式结束的方式?我希望像-end:生成具有状态的最终事件的方法UIGestureRecognizerStateEnded.

gesture uigesturerecognizer ios

10
推荐指数
2
解决办法
9460
查看次数

如何在Windows和/或Mac上的Java应用程序中找到我的"计算机描述"?

我一直在努力寻找运行我的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)

java dns networking system

8
推荐指数
1
解决办法
5110
查看次数