em JavaFX de movimentação de imagem pelo mouse,
"drag and drop", já fizemos isto com objetos em
2D e 3D, mas com imagem este é o primeiro exemplo.
Como imagem estamos abrindo um gif animado que foi
criado por mim mesmo e postado no 4shared à alguns
anos atrás e esta imagem corre por cima de outra,
imagem, a imagem de fundo do programa que traz
o nome em 3D da maior biblioteca para interfaces
gráficas do momento, "JavaFX".
Coloquei limites nas coordenadas do mouse para
que a imagem fique presa dentro da janela,
e isto é muito importante neste tipo de projeto.
Já imaginou a quantidade de programas que podemos
fazer usando estes recursos que mostramos
pacientemente a todos os leitores do blog?
Veja abaixo uma imagem do programa em execução:
Veja abaixo um vídeo do programa em execução:
Veja abaixo o código do programa:
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Cursor;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
public class PROJETO extends Application {
BorderPane root = new BorderPane ( );
Scene scene = new Scene ( root, 600, 300 );
Canvas canvas = new Canvas ( 600, 300 );
GraphicsContext ctx = canvas.getGraphicsContext2D ( );
Image imagem_1 = new Image ( "Palmeiras.gif" );
ImageView imageview_1 = new ImageView ( imagem_1 );
Image imagem_2 = new Image ( "Image8.jpg" );
ImageView imageview_2 = new ImageView ( imagem_2 );
double x = 0, y = 0;
//
/////////////////////////////////////////////////////////////////////////
public void Informe ( ) {
//Usando fonte em
italic
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 13 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "Por: ", 200, 240 );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "Samuel
Lima", 240, 240 );
ctx.setFill ( Color.PINK );
ctx.fillText ( "sa_sp10@hotmail.com", 200, 255 );
ctx.setFill ( Color.RED );
ctx.fillText ( " MUITO
OBRIGADO", 250, 280 );
}
//
/////////////////////////////////////////////////////////////////////////
public void carregaImagem ( ) {
scene.setOnMousePressed ( new EventHandler < MouseEvent > ( ) {
@Override
public void handle ( MouseEvent mouseEvent ) {
x = imageview_1.getLayoutX ( ) - mouseEvent.getSceneX ( );
y =
imageview_1.getLayoutY ( ) - mouseEvent.getSceneY ( );
imageview_1.setCursor ( Cursor.CROSSHAIR );
}
} );
scene.setOnMouseDragged ( new EventHandler < MouseEvent > ( ) {
@Override
public void handle ( MouseEvent mouseEvent ) {
if ( mouseEvent.getSceneX ( ) > 50 &&
mouseEvent.getSceneX ( ) < 550 ) {
imageview_1.setLayoutX ( mouseEvent.getSceneX ( ) + x );
}
if ( mouseEvent.getSceneY ( ) > 50 &&
mouseEvent.getSceneY ( ) < 250 ) {
imageview_1.setLayoutY ( mouseEvent.getSceneY ( ) + y );
}
if ( mouseEvent.getSceneX ( ) == 50 ||
mouseEvent.getSceneX ( ) == 550 ) {
}
if ( mouseEvent.getSceneY ( ) == 50 ||
mouseEvent.getSceneY ( ) == 250 ) {
}
}
} );
}
//
/////////////////////////////////////////////////////////////////////////
public void start ( Stage stage ) throws Exception {
stage.setTitle ( "JAVAFX -
MOVENDO IMAGEM COM O MOUSE" );
imageview_1.setX ( 40 );
imageview_1.setY ( 70 );
imageview_1.setFitWidth ( 80 );
imageview_1.setFitHeight ( 80 );
imageview_2.setX ( 10 );
imageview_2.setY ( 10 );
imageview_2.setFitWidth ( 580 );
imageview_2.setFitHeight ( 280 );
imageview_2.setPreserveRatio ( false );
//Usando fonte em
italic
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 22 ) );
//Criando uma moldura retangular em canvas
ctx.setStroke ( Color.BLUE );
ctx.setLineWidth ( 10.0 );
ctx.strokeRoundRect ( 5, 5, 590, 290, 5, 5 );
ctx.setFill ( Color.RED );
ctx.fillText ( "JAVAFX -
MOVENDO IMAGEM COM O MOUSE", 70, 40 );
carregaImagem ( );
Informe ( );
root.getChildren ( ).addAll ( imageview_2, imageview_1 );
root.getChildren ( ).addAll ( canvas );
stage.setScene ( scene );
stage.show ( );
}
//
/////////////////////////////////////////////////////////////////////////
public static void main ( String [ ] args ) {
launch ( args );
}
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.