내 프로젝트 응용 프로그램 중 하나에서 JavaFX HTMLEditor
을 사용하는 동안 비슷한 상황에 직면했습니다. 나는 button
을 추가하면서 HTML 텍스트의 파싱이 일어날 것입니다. 그리고 추가 작업이 실행되었습니다. AnchorPane
을 사용하여 button
을 HTMLEditor에 완벽하게 추가 할 수 있었고 일부만 보였습니다.
어쨌든, 여기에 당신이 어떤 추가 버튼없이 당신이 원하는 것을 달성 할 수있는 방법에 대한 약간의 예는 다음과 같습니다
package application;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;
public class Main extends Application
{
@Override
public void start(Stage primaryStage)
{
try
{
final HTMLEditor editor = new HTMLEditor();
Scene scene = new Scene(editor);
primaryStage.setScene(scene);
editor.setOnKeyReleased(new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent event)
{
if (isValidEvent(event))
{
System.out.println(editor.getHtmlText());
}
}
private boolean isValidEvent(KeyEvent event)
{
return !isSelectAllEvent(event)
&& ((isPasteEvent(event)) || isCharacterKeyReleased(event));
}
private boolean isSelectAllEvent(KeyEvent event)
{
return event.isShortcutDown() && event.getCode() == KeyCode.A;
}
private boolean isPasteEvent(KeyEvent event)
{
return event.isShortcutDown() && event.getCode() == KeyCode.V;
}
private boolean isCharacterKeyReleased(KeyEvent event)
{
// Make custom changes here..
switch (event.getCode())
{
case ALT:
case COMMAND:
case CONTROL:
case SHIFT:
return false;
default:
return true;
}
}
});
primaryStage.show();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
launch(args);
}
}
UPDATE : 생각의 조금 더시 은, 난 할 이벤트 처리를 얻을 수있는 방법을 발견 버튼 클릭시. 당신이 HTMLEditor
가 표시되면 두 ToolBars
있다
EventHandler<MouseEvent> onMouseExitedHandler = new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent event)
{
System.out.println(editor.getHtmlText());
}
};
for (Node node : editor.lookupAll("ToolBar"))
{
node.setOnMouseExited(onMouseExitedHandler);
}
: 방법은 다음과.
코드에서 수행중인 작업은 두 도구 모음에 대해 looking up
이고 onMouseExited
이벤트 처리기를 설정하는 것입니다. 사용자가 HTML 텍스트를 입력하고 변경하여 툴바를 종료하면 이벤트가 처리되어 처리 될 수 있다는 유추가 있습니다.
필요에 따라이 두 도구 모음에서 다른 종류의 이벤트 처리기를 설정할 수도 있지만, 내 생각에이 onMouseExited
이벤트 처리기는 onKeyReleased
이벤트 처리기와 함께 사용할 때 매우 광범위한 적용 범위를 제공합니다. onMouseExited
처리기를 기반으로 한 적용 범위는 정확하지 않습니다. 여기
무엇에 대한 복사 - 붙여 넣기입니까? :-( – GGrec
@GGrec : 이벤트를 잘라내어 붙여 넣기에 대한 답변을 업데이트했으며, 사용자의 필요에 따라이 저수준 키 리스너를 구성 할만큼 똑똑하다고 확신합니다. –
오,이 사람은 예를 들어 마우스를 사용하여 텍스트를 선택한 다음 굵은 글씨로 바꾼다 모델이 변경되어야하지만 형식 이벤트가 아님 – GGrec