내 Java GUI 코드에 문제가있는 것처럼 보입니다. 왜 작동하지 않는지 전혀 알지 못합니다.스윙 구성 요소 및 awt 이벤트 문제
패널 또는 프레임 에서 마우스를 클릭하면 패널이 표시됩니다. 이것은 단지 테스트 일 뿐이므로 결국이 코드는 다른 GUI 구성 요소에 대해 구현되지만이 작업을 먼저 수행하고 싶습니다. - 팝업 메뉴이 표시되고 포커스가 텍스트 필드에 설정되어야합니다.. 그런 다음 사용자가 enter 키를 누르거나 텍스트 필드의 포커스를 잃어 버리면 팝업 메뉴가 숨겨져 텍스트가 비어 있거나 필요한대로 재설정됩니다.
public class Test {
private final JFrame frame = new JFrame();
private final JPanel panel = new JPanel();
private final JPopupMenu menu = new JPopupMenu();
private final JTextField field = new JTextField();
private final Obj obj;
//... constructor goes here
public void test(){
frame.setSize(new Dimension(200,200));
field.setColumns(10);
field.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
obj.method(field.getText());
menu.setVisible(false);
field.setText("");
}
});
field.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
menu.setVisible(false);
field.setText("");
}
//... focus gained event goes here
});
panel.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
menu.setLocation(e.getX(), e.getY());
menu.setVisible(true);
field.requestFocusInWindow();
}
//... other mouse events go here
});
menu.add(field);
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
을 코드로 여기에 기록 된 메뉴가 자동으로 내가 클릭 한 후 바로 숨 깁니다대로 :
그래서이 내가 쓴 것입니다. 그냥 화면에 잠시 깜박 인 다음 나 외에는 아무것도하지 않고 숨 깁니다.
menu.setVisible(false)
의 항목을 제외하도록 코드를 변경하면 텍스트 필드에 절대 포커스가 적용되지 않습니다.
JPopupMenu의 오용으로 인한 문제입니까? 내가 어디로 잘못 가고 있니?
주 또는 Obj를 생략했습니다. 그들은 다른 파일에 있으며이 문제에 대해 중요하지 않을 가능성이 큽니다. Obj.method()는 아무 일도하지 않고 main은 Test의 생성자와 test() 메소드 만 호출합니다.
팝업 메뉴의 목적은 무엇입니까? – user101884
팝업 메뉴에 텍스트 필드가 있다는 것이 이상하게 보입니다. 이 접근법의 동기는 무엇입니까? 아마 이것을 수행하는 다른 방법이 있습니다 ... – basszero