그래서 스윙을 사용하여 tic-tac-toe와 비슷한 것을 만들고 있습니다. GridLayout과 9 개의 버튼을 만들었고, 이제 jbutton 중 하나를 클릭하면 jtextfield가 표시됩니다. MouseListener를 사용하여 시도했지만 솔루션을 찾지 못했습니다. 어떤 제안?그냥을 클릭하여 JButton에 JTextField를 추가하는 방법?
0
A
답변
2
당신은 사용자 정의 버튼을 만들 수 있습니다.
한 가지 방법은 버튼에 CardLayout
을 사용하고 JTextField
과 JLabel
을 추가하는 것입니다. 버튼의 ActionListener
에서 버튼을 누르면 텍스트 필드가 표시되고 버튼은 비활성화됩니다. 입력란에 텍스트를 입력하고 을 누르면을 입력하고 표시가있는 라벨을 선택하고 버튼을 사용할 수 있습니다.
나는 전체 윈도우 내용을 대체하지 않으
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
public class TestButtonTextField {
public TestButtonTextField() {
JFrame frame = new JFrame();
frame.add(new TextFieldButton("Hello"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
protected class TextFieldButton extends JButton {
private static final String FIELD = "field";
private static final String LABEL = "label";
private final CardLayout layout = new CardLayout();
private final JLabel label;
public TextFieldButton(String text) {
super();
setLayout(layout);
label = new JLabel(text);
label.setHorizontalAlignment(SwingConstants.CENTER);
this.add(label, LABEL);
final JTextField field = createField();
this.add(field, FIELD);
this.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
layout.show(TextFieldButton.this, FIELD);
TextFieldButton.this.setEnabled(false);
}
});
}
private JTextField createField() {
final JTextField field = new JTextField(5);
field.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
label.setText(field.getText());
field.setText("");
layout.show(TextFieldButton.this, LABEL);
TextFieldButton.this.setEnabled(true);
}
});
return field;
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new TestButtonTextField();
}
});
}
}
0
버튼에 적절한 수신기를 추가하려면 addActionListener를 사용하십시오. setVisible (boolean) 메서드를 사용하여 구성 요소의 가시성을 전환 할 수 있습니다. 그러나이 작업 후에는 윈도우의 크기를 조정하거나 다시 칠해야 할 것입니다.
편집 : 당신이 전체 윈도우 내용을 교체하려는 경우, 당신은 또한 스윙의 CardLayout에서 살펴 봐야 할 수 있습니다 : http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html
관련 문제
- 1. JComboBox를 사용하여 JTextField를 추가하는 방법
- 2. Java에서 JButton에 다중 ActionMap을 추가하는 방법
- 3. 버튼을 클릭하여 행을 추가하는 방법
- 4. 여러 JButton에 작업을 추가하는 방법 내부 ActionListener 클래스가있는 JTextfield?
- 5. 줄을 알 수없는 JButton에 여러 줄 텍스트를 추가하는 방법? (동적으로)
- 6. JTextfield를 가운데에 맞추는 방법
- 7. JTextField를 JTable에 프린트하는 방법?
- 8. JTextField를 Java로 실행중인 시간에 추가하는 방법은 무엇입니까?
- 9. 다중 선택을 클릭하여 표에 행을 추가하는 방법
- 10. 이미지를 JButton에 표시하기
- 11. JTextField를 마우스로 클릭 할 때 JTextField를 지우는 방법
- 12. JFrame의에서의 JButton에
- 13. JButton에 작업 이벤트 추가
- 14. 클릭하면 JButton에 타원을 그리기
- 15. JButton에 아이콘을 표시하고 숨 깁니다.
- 16. 는 JTextField를
- 17. JAVA에서 JButton에 아이콘을 추가하는 것에 대해 확신이 없습니다
- 18. JPanel에 추가 된 JButton에 ActionListener를 추가하는 방법은 무엇입니까?
- 19. JButton에 마우스 이동 이벤트를 쓰는 방법
- 20. 두 JButton에 동일한 ImageIcon이 있는지 확인하는 방법?
- 21. JTextField를 JEditorPane 위에두고 JTabbedPane 아래에 JTextField를 가져올 수 있습니까?
- 22. JButton에 컬러 사각형을 그리는 방법은 무엇입니까?
- 23. JButton에 대한 키 바인딩
- 24. jButton에 속성 추가하기 [Java]
- 25. Java - JButton에 이미지 추가
- 26. JButton에 setFocusPainted가 사용되었습니다.
- 27. JButton에 여러 아이콘 설정
- 28. JButton에 onResizeListener 추가
- 29. JButton에 기본 포커스 설정
- 30. 은 어떻게 JTextField를
. 클릭 할 때 일부 문자열로 버튼을 채우기 만하면됩니다. 그것은 _setVisible (true) _.에도 불구하고 작동하지 않았다. – bltzrrr
JTextField를 표시하거나 단추를 채우시겠습니까? 버튼 클릭이나 텍스트 필드의 클릭에 반응하고 싶습니까? 네가하고 싶은 것을 이해하는지 확신 할 수 없다. – user3575404
JTextField를 JButton 위에 표시하려면 JButton을 클릭합니다. String을 입력하면 그 내용을 저장할 수 있습니다 (나중에 사용법을 다룰 것입니다. 나는 이걸 건네 준다.) – bltzrrr