我需要确定Shift键的当前状态,但是当我需要状态时我没有InputEvent对象.我需要像java.awt.Toolkit.getLockingKeyState(int)Shift 这样的东西,而不仅仅是锁定键VK_CAPS_LOCK.有没有办法我可以在不收听输入事件的情况下执行此操作,并在以后需要检查状态时存储for?
谢谢!
我的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) 我希望在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) 我有一个窗口,我正在查看使用Spy ++发送给它的消息.是否可以确定哪个进程向我的窗口发送了给定的消息,如果它确实是从另一个进程发送的?
我有一台上网本,它的触摸板上支持多点触控手势。当您向左或向右三指滑动时,它会向活动窗口发送一些消息 - 对于某些窗口,这意味着发送页面向上/向下按键。
根据 Spy++ 的说法,向右滑动发送的实际消息是:
我的问题是:这个 0xFF 虚拟键码是什么,它是否记录在某处?在 winuser.h 中没有相应的 #define。