JavaFx에서 스크린 레코딩 응용 프로그램을 만드는 법을 배우고 있습니다. 사용자가 화면 캡처 영역을 결정하기 위해 사각형의 크기를 조정하기를 원합니다. 무대와 장면을 투명하게 만들었습니다. primaryStage.initStyle(StageStyle.TRANSPARENT);
및 scene.setFill(null);
. 사각형 섹션의 크기를 조정할 수 있지만 문제는 스테이지 내부를 클릭하면 투명하므로 최소화됩니다. 이 문제를 해결하는 방법? 본 신청서는 screencast-o-matics으로 동일하게 간주됩니다. 제발 날 안내 해줘.Javafx에서 내부를 클릭하면 투명한 스테이지가 최소화되지 않아야합니다.
편집 : 코드 :
import java.awt.Toolkit;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class ScreenCaptureDemo extends Application {
Rectangle rectangle ;
double x0,y0;
public static void main(String[] args) {
launch(ScreenCaptureDemo.class);
}
@Override
public void start(final Stage primaryStage) throws Exception {
BorderPane borderPane = new BorderPane();
GridPane gridPane = new GridPane();
HBox box = new HBox();
Button button1 = new Button("button2");
Button button2 = new Button("Button3");
Button button = new Button("button");
box.getChildren().add(button);
box.getChildren().add(button1);
box.getChildren().add(button2);
rectangle = new Rectangle(500.0, 500.0);
rectangle.setStrokeWidth(2);
rectangle.setArcHeight(15.0);
rectangle.setArcWidth(15.0);
rectangle.setFill(Color.TRANSPARENT);
rectangle.setStroke(Color.RED);
rectangle.setStrokeWidth(5);
rectangle.getStrokeDashArray().addAll(3.0,13.0,3.0,7.0);
gridPane.add(rectangle, 0, 0);
gridPane.add(box, 0, 1);
borderPane.setCenter(gridPane);
Scene scene = new Scene(borderPane,Toolkit.getDefaultToolkit().getScreenSize().getWidth()-100,Toolkit.getDefaultToolkit().getScreenSize().getHeight()-100);
scene.setOnMouseDragged(mouseHandler);
scene.setOnMousePressed(mouseHandler);
primaryStage.setScene(scene);
primaryStage.initStyle(StageStyle.TRANSPARENT);
scene.setFill(null);
rectangle.setMouseTransparent(true);
rectangle.setPickOnBounds(true);
primaryStage.show();
}
void setScaleRect(double sX, double sY){
rectangle.setHeight(sY);
rectangle.setWidth(sX);
}
EventHandler<MouseEvent> mouseHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED) {
double heightLowerLimit = rectangle.getHeight()-500;
double heightUpperLimit = rectangle.getHeight()+500;
double widthLowerLimit = rectangle.getWidth()-500;
double widthUpperLimit = rectangle.getWidth()+500;
if ((mouseEvent.getY() >heightLowerLimit && mouseEvent.getY() < heightUpperLimit) &&
(mouseEvent.getX() >widthLowerLimit && mouseEvent.getX() < widthUpperLimit)
) {
double scaleX = mouseEvent.getX();
double scaleY = mouseEvent.getY();
setScaleRect(scaleX, scaleY);
} else if ((mouseEvent.getY() >heightLowerLimit && mouseEvent.getY() < heightUpperLimit)
&& (mouseEvent.getX() <widthLowerLimit && mouseEvent.getX() > widthUpperLimit)) {
double scaleY = mouseEvent.getY();
double scaleX=rectangle.getWidth();
setScaleRect(scaleX, scaleY);
} else if (mouseEvent.getY() != rectangle.getHeight()
&& mouseEvent.getX() == rectangle.getWidth()) {
double scaleX = mouseEvent.getX();
double scaleY=rectangle.getHeight();
setScaleRect(scaleX, scaleY);
}
}
}
};
}
미리
포스트 재현 샘플 코드로 사각형을 채 웁니다. –
@UlukBiy : hie 나는 http://www.screencast-o-matic.com/과 같은 것을 계속하고 싶다. 나는 투명 창을 클릭 할 수 없다. 내가 클릭하면, 최소화된다. 나는 가지고있다. 코드로 제 질문을 수정했습니다 ... screen-o-matics를 확인하십시오. 화면 캡처 영역과 관련하여 비슷한 기능을 원합니다. 감사합니다. – tarkikshah