我在 Java Swing 中发现了一个奇怪的异常。当用户按下空格键时,按时间顺序添加到 UI 的第一个 JButton 总是会触发,假设他在执行此操作之前没有单击另一个按钮。如果调用getRootPane().setDefaultButton(JButton)
和 ,甚至会发生此行为。JButton.requestFocus()
当请求 JButton 焦点时,似乎至少有 2 种不同的“焦点”。“焦点”或突出显示之一是按钮上文本周围的虚线矩形,而另一个是指定按钮周围的较粗轮廓。
只要按下空格键,就会触发带有虚线轮廓文本的按钮。每当按下回车键时,带有粗边框的按钮就会触发。
我准备了一个可编译的最小示例来说明这种行为。根本不涉及键映射/绑定。
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class ButtonFocusAnomalyExample extends JFrame {
public ButtonFocusAnomalyExample() {
super();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 300;
int frameHeight = 300;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) …
Run Code Online (Sandbox Code Playgroud) 在我的IA-32处理器Linux程序集中,我有两个存储空间.
inbuf: resb 3
outbuf: resb 4
Run Code Online (Sandbox Code Playgroud)
inbuf
真的只需要3个字节,我不想浪费任何内存.现在,假设我想用这样的零覆盖它们:
xor [inbuf], inbuf
xor [outbuf], outbuf
Run Code Online (Sandbox Code Playgroud)
nasm说我需要指定操作大小,这是可以理解的.现在outbuf
这个没问题,因为我可以写
xor dword [outbuf], outbuf
Run Code Online (Sandbox Code Playgroud)
相反,但显然,任意大小的大小关键字都不是3字节.我该如何指定大小inbuf
?
我不是真的在寻找一个用零覆盖存储的解决方案,我猜其他的工作也一样,但这也解决了我的问题如何使用像
mov eax, inbuf
Run Code Online (Sandbox Code Playgroud)
没有得到"未指定大小"错误.
我目前正在编写一个方法来测试输入字符串(密码)是否包含字典的一部分.字典是一个简单的txt文件,每行一个字.我现在想检查字典的每一行,如果它包含在输入字符串中.下面的代码对我有用:
public boolean dictionaryCheck(String pLine)
{
BufferedReader myReader;
String currentLine;
try
{
myReader = new BufferedReader(new FileReader("dict.txt"));
while(myReader.readLine() != null)
{
currentLine = myReader.readLine();
if(pLine.contains(currentLine))
{
return false;
}
}
}
catch (Exception e){System.out.println("Error: " + e);}
return true;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用任何参数String运行该方法时,我收到以下错误:
Error: java.lang.NullPointerException
所以我假设BufferedReader没有正确初始化.
有关如何解决此问题的任何建议?代码对我来说似乎很好,但我可能会忽略一个错误.
提前致谢,
乔库克