I am having some trouble removing the default input map information on my components in a java swing application. This is what I am trying to do:
//List of keys to remove
public static final int[] OVERWRITTEN_KEYS =
{
VK_SPACE
};
//Get default input maps
InputMap[] im = {
(InputMap)UIManager.get("Button.focusInputMap"),
(InputMap)UIManager.get("ToggleButton.focusInputMap"),
(InputMap)UIManager.get("Slider.focusInputMap"),
(InputMap)UIManager.get("RadioButton.focusInputMap"),
(InputMap)UIManager.get("TextArea.focusInputMap"),
(InputMap)UIManager.get("TextField.focusInputMap")
};
//Loop through input maps
for(int i = 0; i < im.length; i++)
{
//Loop through keys
for(int j = 0; j < OVERWRITTEN_KEYS.length; j++)
{
if(im[i] != null)
{
//Overwrite press and release of button
im[i].put(KeyStroke.getKeyStroke(OVERWRITTEN_KEYS[j],0,false), "none");
im[i].put(KeyStroke.getKeyStroke(OVERWRITTEN_KEYS[j],0,true), "none");
}
}
}
But, for some reason, this has no effect. Pressing the spacebar still fires a JButton click, etc. Does anyone see something wrong with this code block? Thanks beforehand.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…