JTextFields를 사용하는 경우 기본 텍스트를 설정하고 싶습니다.JTextfield에서 기본 선택을 선택 취소하십시오.
그런 다음 프로그램을 실행하면이 기본 텍스트가 자동으로 선택됩니다 (적어도 하나의 필드 만있는 경우). 즉, 문자를 바로 입력하면 기본 텍스트가 삭제되고 새 문자로 바뀝니다.
제 질문은 기본 텍스트를 삭제하지 않고 문자를 입력 할 수 있도록 기본 설정을 어떻게 변경할 수 있습니까? 편지가 기본 텍스트의 끝에 추가되기를 바랍니다. 여기
내 코드입니다 :public class ButtonsNText extends JPanel implements ActionListener, KeyListener {
private JTextField TextLine;
private JToggleButton UpperCaseButton;
private JToggleButton LowerCaseButton;
private JCheckBox ContinuousButton;
private ButtonGroup myButtonGroup;
public ButtonsNText(){
TextLine = new JTextField(10);
add(TextLine); TextLine.setName("TextLine");
TextLine.setText("default text");
TextLine.setCaretPosition(TextLine.getText().length());
TextLine.addKeyListener(this);
myButtonGroup = new ButtonGroup();
UpperCaseButton = new JToggleButton("Upper case");
add(UpperCaseButton);UpperCaseButton.setName("UpperCaseButton");
LowerCaseButton = new JToggleButton("Lower case");
add(LowerCaseButton); LowerCaseButton.setName("LowerCaseButton");
ContinuousButton = new JCheckBox("Continuous?");
add(ContinuousButton); ContinuousButton.setName("ContinuousButton");
myButtonGroup.add(UpperCaseButton); myButtonGroup.add(LowerCaseButton);
UpperCaseButton.addActionListener(this);
LowerCaseButton.addActionListener(this);
ContinuousButton.addActionListener(this);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Hello world example");
frame.add(new ButtonsNText());
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == UpperCaseButton){
TextLine.setText(TextLine.getText().toUpperCase());
}
else if(e.getSource() == LowerCaseButton){
TextLine.setText(TextLine.getText().toLowerCase());
}
}
@Override
public void keyReleased(KeyEvent k) {
if(ContinuousButton.isSelected()){
if(UpperCaseButton.isSelected()){
int pos = TextLine.getCaretPosition();
TextLine.setText(TextLine.getText().toUpperCase());
TextLine.setCaretPosition(pos);
}
else if(LowerCaseButton.isSelected()){
int pos = TextLine.getCaretPosition();
TextLine.setText(TextLine.getText().toLowerCase());
TextLine.setCaretPosition(pos);
}
}
int key = k.getKeyCode();
if(key == KeyEvent.VK_ENTER){
if(UpperCaseButton.isSelected()){
TextLine.setText(TextLine.getText().toUpperCase());
}
else if(LowerCaseButton.isSelected()){
TextLine.setText(TextLine.getText().toLowerCase());
}
}
}
} 내가 isFocusable(), 위해서 setFocusable(), setCaterPosition() 및 기타 유사한 방법 같은 것들을 시도
, 그러나 여기에서 나는 다른 접근 방식을 필요가 있다고 생각 .
삭제됩니다 다음은 당신의 도움에 대한 코드를 참조하십시오. –
Java 명명 규칙을 배우고 그들에게 붙이십시오 – kleopatra
... 그리고 keylisteners를 사용하지 마십시오 – kleopatra