내 최근 프로젝트 중 하나에서 숨겨진 페이지를 구현하고 싶습니다. 화면에 아무 것도 표시하지 않고 암호를 입력하기 만하면 접근 할 수 있기를 원합니다. 나는 PasswordField
을 visible(false)
으로 설정하려했습니다. 그러나 그것은 작동하지 않았다. 또한 암호를 입력 한 후 Enter 키를 누르지 않아도 숨겨진 페이지가 팝업되도록하고 싶습니다. 간단한 javafx 애플리케이션이 그렇게 동작 할 수있는 방법이 있습니까?보이지 않는 암호
답변
입력 된 내용을 추적하는 이벤트 필터를 장면에 추가 할 수 있습니다. 여기
는 (팝업 창을 보여주기 위해 초점을 맞춘 메인 창 유형 "비밀"당신은 숨겨진 텍스트를 취소 잘못 입력하는 경우를 눌러 입력) 간단한 예입니다 : 이import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class OpenSecretWindow extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("Type the secret password\nto open the secret window");
label.setTooltip(new Tooltip("The secret password is \"secret\""));
StackPane root = new StackPane(label);
Scene scene = new Scene(root, 400, 400);
StringBuilder typedText = new StringBuilder();
scene.addEventFilter(KeyEvent.KEY_TYPED, e -> {
switch(e.getCharacter()) {
case "\n":
case "\r":
typedText.delete(0, typedText.length());
break ;
default:
typedText.append(e.getCharacter());
}
if ("secret".equals(typedText.toString())) {
openSecretWindow(primaryStage);
typedText.delete(0, typedText.length());
}
});
// handle backspace and delete:
scene.addEventFilter(KeyEvent.KEY_RELEASED, e -> {
if (e.getCode() == KeyCode.BACK_SPACE || e.getCode() == KeyCode.DELETE) {
if (typedText.length() > 0) {
typedText.delete(typedText.length()-1, typedText.length());
}
}
});
primaryStage.setScene(scene);
primaryStage.show();
}
private void openSecretWindow(Stage owner) {
Stage stage = new Stage();
StackPane root = new StackPane(new Label("You have found\nthe secret window!"));
Scene scene = new Scene(root, 300, 180);
stage.setScene(scene);
stage.initOwner(owner);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
KeyListener을 사용할 수 있습니다. 키를 눌러 등록하려면 화면을 한 번 눌러야합니다. 그리고 JFrame에 keylistener를 추가하십시오, 나는 항상 그것을 잊습니다. 이렇게하면 키를 찾을 수 있지만 창을 표시해야합니다. 그러나이 키는 비어있을 수 있습니다.
을에 모두 표시하지 않으려면 외부 라이브러리 jnativehook을 사용하여 전체적으로 키 누르기를 찾습니다.
나는 그것을 시도 할 것이다 .. – jobr97
JPasswordField의 전경을 배경색과 동일하게 설정할 수 있다고 생각하지만 저를 인용하지 마십시오. 예 :
JPasswordField.SetForeground(Color.RED);
당신은 커서를 볼 수 있기 때문에, 나는 keylistener로 그 방법을 시도 할 것이다. – jobr97
- 1. 보이지 않는 컨트롤로 보이지 않는 비디오
- 2. IE에서 보이지 않는 div
- 3. 안드로이드 글고 눈에 보이지 않는 비밀
- 4. asp : 보이지 않는 요소 + 보이지 않는 대상의 유효성 검사기
- 5. 보이지 않는 보이지 않는 폼을 만드는 법 PHP
- 6. 지도가 보이지 않는 안드로이드지도
- 7. Eclipse의 보이지 않는 마커
- 8. 패키지가 보이지 않는 오류
- 9. 버튼이 보이지 않는 XFBML
- 10. 보이지 않는 비행기 문제
- 11. AndroidPlot 보이지 않는 마커
- 12. 충돌 : 보이지 않는 텍스트는
- 13. 보이지 않는 요소의 Xpath
- 14. 내지도에 보이지 않는 스타일
- 15. 보이지 않는 인터페이스 -TabBarController
- 16. PyQt 보이지 않는 버튼
- 17. Eclipse에서 보이지 않는 이미지
- 18. JPanel에서 보이지 않는 JTable
- 19. "보이지 않는"마스터 프로젝트
- 20. 보이지 않는 컨트롤을 제거하십시오.
- 21. 보이지 않는 지형
- 22. GridX의 보이지 않는 열?
- 23. 보이지 않는 테두리 C#
- 24. 보이지 않는 문자
- 25. Android - 보이지 않는 단추
- 26. 제거 보이지 않는 문자는
- 27. IE에서 보이지 않는 배경
- 28. PHP에서 보이지 않는 오류
- 29. SSRS의 보이지 않는 문자
- 30. RadioGroup 보이지 않는 공
'JPasswordField'는 스윙 구성 요소입니다 JavaFX 구성 요소가 아닙니다. 어떤 툴킷을 사용하고 있습니까? –
@ James_D 네가 맞아! 내가 잘못 입력 했어. 나는 보통의 PasswordField를 의미했다. – jobr97
이것이 JavaFX인가? 너 왜 스윙 태그가 있니? 이것이 스윙 질문이 아니라면 제거 할 수 있습니까? –