나는 아마도 당신이 색상을 변경하고 클릭 만들고 싶어, 당신은 JButton
포커스 (그렇지 않으면 늘 JTextArea
/JTextField
등을 입력 할 수)를 설정하려는 생각 해달라고 할 때 특정 문자 (들) 입력 되었습니까?
- 스윙 구성 요소를 사용하는 경우 다른 사람이 제안한대로 KeyBindings을 사용하십시오.
: 여기
내가 이루어지는 예이다. 버튼 배경이 파란색으로 변경됩니다 누르면 (버튼 방법은 자동으로 삽입되는 SPACE 후라고합니다 '.') :
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
public class Test {
final JFrame frame = new JFrame();
final JTextField jtf = new JTextField(15);
final JButton button = new JButton("SPACE");
public Test() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
private void initComponents() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
insertSpace();
}
});
final Color defaultColor = button.getBackground();
jtf.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_PERIOD, 0, true), "period rel");
jtf.getActionMap().put("period rel", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
//button.doClick(); //I dont like this as it makes JBUtton look like its being clicked where as we want a color change
insertSpace();
button.setBackground(defaultColor);
}
});
jtf.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_PERIOD, 0), "period pressed");
jtf.getActionMap().put("period pressed", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
button.setBackground(Color.CYAN);
}
});
frame.add(jtf, BorderLayout.NORTH);
frame.add(button, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
private void insertSpace() {
String s = jtf.getText();
jtf.setText(s + " ");
}
}
내가 왜 당신을 이해할 수 없었다 JButton에 초점을 맞추고 싶습니다. –
어쩌면 나는 자신을 올바르게 표현하지 않을 것이기 때문에, 버튼을 누를 때마다 붉은 색에서 회색으로 색이 변하도록 버튼을 만들 필요가있다. –
알겠습니다. 입력에 JTextField가 필요합니까? 내가 틀렸다면 나를 바로 잡아주세요. –