我创建了一个对话框,用户可以通过用户击键来更改菜单项的键绑定.我想输入和转义为用户可以绑定的键,但它们都关闭对话框.这些印刷机怎么能被截获?
编辑:使用JOptionPane和自定义组件创建对话框
GetKeyComponent comp = new GetKeyComponent(accels, menuItem);
Object[] array = { comp };
JOptionPane optionPane = new JOptionPane(array,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
Run Code Online (Sandbox Code Playgroud) 在康威的生命游戏模拟器中,我有八个代码块,看起来像这样找到一个单元格的邻域.
int count = 0;
p.setLocation(p.x-1, p.y-1); //upper left
if( data.contains(p) ) ++count;
else if( addingDeadCells ) {
deadCellsToCheck.add(p);
for( Point z : deadCellsToCheck )
System.out.println(z.toString() + " " + z.hashCode());
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
p是表示当前单元格的点,data是包含活动单元格的HashSet.为了提高效率,我只检查与活细胞相邻的死细胞,因此deadCellsToCheck是另一个HashSet,它将每一代开始为空.每次执行deadCellsToCheck.add(p)时,似乎已经在其中的所有单元都被覆盖为刚添加的单元,因为输出如下所示:
java.awt.Point[x=0,y=0] 0
java.awt.Point[x=1,y=0] 1072693248
java.awt.Point[x=1,y=0] 1072693248
java.awt.Point[x=2,y=0] 1073741824
java.awt.Point[x=2,y=0] 1073741824
java.awt.Point[x=2,y=0] 1073741824
etc...
Run Code Online (Sandbox Code Playgroud)
我不认为这可能有多种原因.有任何想法吗?