显示一组JRadioButtons时,最初没有选择它们(除非您以编程方式强制执行).即使在用户已选择按钮之后,我也希望能够将按钮重新置于该状态,即,不应选择任何按钮.
但是,使用通常的嫌疑人无法提供所需的效果:在每个按钮上调用'setSelected(false)'不起作用.有趣的是,当按钮没有放入ButtonGroup时它确实有效 - 不幸的是,后者是JRadioButtons互斥的必需品.
此外,使用setSelected(ButtonModel,boolean) - javax.swing.ButtonGroup的方法不能做我想要的.
我已经整理了一个小程序来演示效果:两个单选按钮和一个JButton.单击JButton应取消选择单选按钮,以使窗口看起来与第一次弹出时完全一样.
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
/**
* This class creates two radio buttons and a JButton. Initially, none
* of the radio buttons is selected. Clicking on the JButton should
* always return the radio buttons into that initial state, i.e.,
* should disable both radio buttons.
*/
public class RadioTest implements ActionListener {
/* create two radio buttons and a group */
private JRadioButton button1 = …Run Code Online (Sandbox Code Playgroud) 我在Linux/XWindows上的简单Java2D应用程序中遇到系统事件和窗口刷新率之间的意外交互.最好用下面的小例子来说明.
该程序创建一个小窗口,其中以不同的旋转显示半圆.图形以每秒60帧的速度更新,以产生闪烁的显示.这是通过a BufferStrategy,即通过调用其show方法来实现的.
但是,我注意到当我(a)将鼠标移到窗口上以便窗口接收鼠标悬停事件或(b)按住键盘上的键以使窗口接收键盘事件时,闪烁明显增加.
由于BufferStrategy.show()调用的速率不受这些事件的影响,可以通过控制台上的打印输出看到(它们应该始终保持在60 fps左右).然而,更快的闪烁表明显示实际更新的速率确实改变了.
在我看来,除非生成鼠标或键盘事件,否则无法实现实际的,即每秒可见的60帧.
public class Test {
// pass the path to 'test.png' as command line parameter
public static void main(String[] args) throws Exception {
BufferedImage image = ImageIO.read(new File(args[0]));
// create window
JFrame frame = new JFrame();
Canvas canvas = new Canvas();
canvas.setPreferredSize(new Dimension(100, 100));
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
int fps = 0;
long nsPerFrame = 1000000000 / 60; // 60 = target fps
long showTime = …Run Code Online (Sandbox Code Playgroud) 在下面的程序中,为什么在击中+时a按键打印"你好,世界"不?CTRLa
import java.awt.event.*;
import javax.swing.*;
public class KeyStrokeTest {
public static void main(String[] args) {
JPanel panel = new JPanel();
/* add a new action named "foo" to the panel's action map */
panel.getActionMap().put("foo", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
System.out.println("hello, world");
}
});
/* connect two keystrokes with the newly created "foo" action:
- a
- CTRL-a
*/
InputMap inputMap = panel.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), 0), "foo");
inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), InputEvent.CTRL_DOWN_MASK), "foo");
/* display the …Run Code Online (Sandbox Code Playgroud) 我在全屏模式下在我的Ubuntu上网本上使用GNU Emacs.当我编辑受版本控制的文件并点击Cx vv以提交最新更改时,OpenSSH弹出窗口将打开并询问我的存储库所在服务器的密码.
不幸的是,由于全屏模式,弹出窗口不会出现,我无法输入密码.但它仍然是某种模态,所以我也不能回到emacs,比如说,离开全屏模式(或者做其他任何事情,比如Cg).我基本上被困了.
作为一个emacs用户,我发现弹出窗口的想法无论如何令人作呕;-)所以理想情况下,我想要在迷你缓冲区中输入ssh密码.如何调整我的设置才能实现这一目标?(我更喜欢每次输入我的密码,而不是在〜/ .ssh /中存储密钥对).
我很想写一些 Java 代码,这些代码基本上只是播放一个简短的 .wav 文件——“短”我的意思是几分之一秒。(我使用的文件位于 /usr/share/sounds/generic.wav,供使用 Ubuntu 的人使用。)
问题是,我似乎无法弄清楚如何可靠地播放该样本,即在我所有的尝试中,我可以让我的程序以 5 次中的 4 次左右播放声音,但永远不会 100%。
这是迄今为止作为独立程序效果最好的方法:
File soundFile = new File("/usr/share/sounds/generic.wav");
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(soundFile);
clip.open(inputStream);
clip.start();
Run Code Online (Sandbox Code Playgroud)
(请注意,代码甚至没有调用 clip.stop() )但即使有那个,如果我连续运行几次,迟早会有一个没有播放任何声音的运行,但没有也有例外。
我尝试过的变化:
1) 将音频文件加载到字节数组中并将其传递给 clip.open
2) 将 LineListener 附加到剪辑以等待 STOP 事件
加上一些随机试验,但到目前为止,我还没有设法创建每次都有效的代码。
我还知道以下错误:http : //bugs.sun.com/bugdatabase/view_bug.do?bug_id=4434125但我使用的是 Java 1.6 并且报告声称 Java 1.5 或更高版本应该没问题.
有任何想法吗?是PulseAudio吗?
我是Emacs的新手.我在Windows上运行emacs.当我点击它启动Emacs时runemacs.exe,我有一个欢迎窗口.现在要创建一个新文件并进行一些实验编辑,我按下C-x C-f.现在命令行显示类似于:
Find file: d:\emacs-23.3\bin
Run Code Online (Sandbox Code Playgroud)
通常我需要按退格键一段时间来删除d:\emacs-23\bin并输入一个新的文件名c:\test\a.txt.我的问题是,我怎样才能快速删除d:\emacs-23\bin?你如何处理欢迎窗口(我不喜欢它)?
谢谢
在为GNU/Emacs模式设置font-lock-keywords时,是否可以使用单个匹配器突出显示正则表达式的多个子表达式?我想做的是:
("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))
Run Code Online (Sandbox Code Playgroud)
这样的东西的正确语法是什么 - 或者我必须将它分成两个不同的匹配器?
在我正在使用的一些模式中,emacs通过自动关闭一些元素(如引号,括号)来帮助我.
然而有时候,出于习惯,我输入了我自己的结束元素并最终得到())或""".
如何设置emacs以忽略额外的密钥?
emacs ×5
java ×4
swing ×2
action ×1
audio ×1
cvs ×1
editor ×1
elisp ×1
frame-rate ×1
graphics2d ×1
keystroke ×1
lisp ×1
openssh ×1
popup ×1
radio-button ×1
text-editor ×1
x11 ×1
xpath ×1