小编hey*_*cam的帖子

在Java中确定没有InputEvent对象的修饰符键状态

我需要确定Shift键的当前状态,但是当我需要状态时我没有InputEvent对象.我需要像java.awt.Toolkit.getLockingKeyState(int)Shift 这样的东西,而不仅仅是锁定键VK_CAPS_LOCK.有没有办法我可以在不收听输入事件的情况下执行此操作,并在以后需要检查状态时存储for?

谢谢!

java keyboard awt

6
推荐指数
1
解决办法
1612
查看次数

我可以批量处理一些Swing组件更新,以便重新绘制所有内容吗?

我的JToolBar中有一堆按钮,我根据应用程序的状态将其中一些设置为禁用或启用.我发现当我一次更新一些按钮时,它们并非同时重新绘制.我想确保当我设置一些禁用/启用的按钮时,它们都会同时改变状态.

下面是一个小测试,演示了这个问题.(它需要当前目录中的文件a.png用作按钮图标.)运行时,会显示一个带有10个按钮的工具栏.在终端按Enter键将切换所有按钮的禁用状态.至少在我的机器上,每次执行此操作时,按钮都会以看似随机的顺序重新绘制,而不是一次性完成.

似乎双缓冲可以解决问题,虽然我尝试的第一件事(在JToolBar上设置双缓冲)似乎没有影响任何东西.

谢谢,

卡梅伦

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.*;

public class Test {
    public static void main(String[] args) throws IOException {
        final JButton[] bs = new JButton[10];
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame("test");
                JToolBar t = new JToolBar();
                f.getContentPane().add(t);
                for (int i = 0; i < bs.length; i++) {
                    bs[i] = new JButton(new ImageIcon("a.png"));
                    t.add(bs[i]);
                }
                f.pack();
                f.setVisible(true);
            }
        });
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        for (;;) {
            r.readLine(); …
Run Code Online (Sandbox Code Playgroud)

java swing

5
推荐指数
1
解决办法
390
查看次数

为什么没有为我的JPopupMenu调用componentHidden?

我希望在JPopupMenu隐藏我时收到通知- 无论是因为某个项目被选中,菜单被解雇还是setVisible(false)被调用了.这是我的测试代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class A extends ComponentAdapter implements Runnable, ActionListener {
    private JButton b;

    public static void main(String[] args) {
        EventQueue.invokeLater(new A());
    }

    public void run() {
        JFrame f = new JFrame("Test");
        b = new JButton("Click me");
        b.addActionListener(this);
        f.add(b);
        f.pack();
        f.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        JPopupMenu pm = new JPopupMenu();
        pm.addComponentListener(this);
        pm.add("Popup...");
        pm.add("...menu!");
        pm.show(b, 10, 10);
    }

    public void componentShown(ComponentEvent e) { System.out.println("componentShown"); }
    public void componentHidden(ComponentEvent e) …
Run Code Online (Sandbox Code Playgroud)

java swing jpopupmenu

4
推荐指数
1
解决办法
930
查看次数

我可以确定哪个进程向我的窗口发送了消息吗?

我有一个窗口,我正在查看使用Spy ++发送给它的消息.是否可以确定哪个进程向我的窗口发送了给定的消息,如果它确实是从另一个进程发送的?

winapi message

4
推荐指数
1
解决办法
176
查看次数

Win32 虚拟键代码 0xFF 用于什么,它是否在某处记录?

我有一台上网本,它的触摸板上支持多点触控手势。当您向左或向右三指滑动时,它会向活动窗口发送一些消息 - 对于某些窗口,这意味着发送页面向上​​/向下按键。

根据 Spy++ 的说法,向右滑动发送的实际消息是:

  • WM_KEYDOWN,虚拟键 = 0xFF
  • WM_KEYDOWN,虚拟键 = VK_NEXT
  • WM_KEYUP,虚拟键 = VK_NEXT
  • WM_KEYUP,虚拟键 = 0xFF

我的问题是:这个 0xFF 虚拟键码是什么,它是否记录在某处?在 winuser.h 中没有相应的 #define。

windows keyboard-events

3
推荐指数
1
解决办法
4118
查看次数

标签 统计

java ×3

swing ×2

awt ×1

jpopupmenu ×1

keyboard ×1

keyboard-events ×1

message ×1

winapi ×1

windows ×1