a imagem de fundo branco, é usada no lugar do
clearRect (); do canvas.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.stage.Stage;
import javafx.event.EventHandler;
import javafx.scene.paint.Color;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.control.TextField;
import javafx.geometry.Insets;
import javafx.scene.layout.HBox;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import java.util.function.UnaryOperator;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.TextFormatter.Change;
import java.awt.Toolkit;
////////////////////////////////////////////////////////////////////////////////
public class PROJETO extends Application {
int a = -1, i = 0;
public int qnt;
String str_0 = "";
Canvas canvas = new Canvas ( 600, 300 );
GraphicsContext ctx = canvas.getGraphicsContext2D ( );
BorderPane borderPane = new BorderPane ( );
TextField textField_1 = new TextField ( );
HBox hbox_1 = new HBox ( textField_1 );
Pane root = new Pane ( );
Scene scene = new Scene ( root, 600, 300, Color.WHITE );
Image imagem_1 = new Image ( "FundoBranco.png" );
//
/////////////////////////////////////////////////////////////////////////
public void Informe ( ) {
ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "Por: ", 250, 255 );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "Samuel
Lima", 280, 255 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "sa_sp10@hotmail.com", 250, 270 );
ctx.setFill ( Color.RED );
ctx.fillText ( "MUITO
OBRIGADO", 270, 290 );
}
//
/////////////////////////////////////////////////////////////////////////
public void fill_Array ( int vet [ ] ) {
fundo ( );
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 20 ) );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Número para a
posição ",80, 80 );
ctx.setFill ( Color.RED );
ctx.fillText ( " " + ( a ), 300, 80 );
//Vet [ 0 ] será o
tamanho do array
//então o primeiro número digitado
//não entrará em suas posições.
if ( a == vet [ 0 ] ) {
textField_1 .setVisible ( false );
for ( i = 1; i <= vet [ 0 ]; i++ ) {
System.out.print ( vet [ i ] + " " );
str_0 += vet [ i ] + " ";
}
fundo ( );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "Veja abaixo o
array preenchido", 120, 110 );
ctx.setFill ( Color.RED );
ctx.fillText ( str_0, 160, 150 );
Informe ( );
}
textField_1.clear ( );
}
//
/////////////////////////////////////////////////////////////////////////
public static void limitTextField ( TextField textField, int limit ) {
UnaryOperator < Change > textLimitFilter = change -> {
if ( change.isContentChange ( ) )
{
int newLength = change.getControlNewText ( ).length ( );
if ( newLength > limit ) {
String trimmedText = change.getControlNewText ( )
.substring ( 0, limit );
change.setText ( trimmedText );
int oldLength = change.getControlText ( ).length ( );
change.setRange ( 0, oldLength );
}
}
return change;
};
textField.setTextFormatter ( new TextFormatter < Object > (
textLimitFilter ) );
}
//
/////////////////////////////////////////////////////////////////////////
public void fundo ( ) {
/*
Os quatro primeiros parâmetros são:
Coluna e linha, largura e altura de onde
pretende-se iniciar o desenhao.
============================================
Os quatro últimos parâmetros são:
Os dois primeiros:
Coluna e linha aonde se deseja aplicar o desenho da imagem
Os dois últimos:
Largura e altura da imagem a ser desenhada.
*/
ctx.drawImage ( imagem_1, 20, 40, 580, 70, 20, 20, 570, 270 );
ctx.setFill ( Color.RED );
//Usando fonte em italic
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 20 ) );
ctx.fillText ( "JAVAFX -
PREENCHENDO ARRAY COM TEXTFIELD", 80, 50 );
}
//
/////////////////////////////////////////////////////////////////////////
public int textFieldArr ( int vet [ ] ) {
// Textfield
hbox_1.setPadding ( new Insets ( 60, 0, 10, 325 ) );
//Limita o textfield para no máximo duas
colunas
textField_1.setPrefColumnCount ( 2 );
//Insere uma pequena mensagem ao usuário
textField_1.setPromptText("arr");
textField_1.setOnKeyPressed ( new EventHandler < KeyEvent > ( ) {
@Override
public void handle ( KeyEvent event ) {
//Limita o textfield
para no máximo
//dois dígitos em sua
entrada
limitTextField ( textField_1, 2 );
// convertendo string
para inteiro
if ( event.getCode ( ) == KeyCode.ENTER ) {
//qnt recebe a entrada
do textfield
//convertida para
inteiro
qnt = Integer.parseInt ( textField_1.getText ( ) );
//Se a entrada do
textfield for um inteiro
//entre 0 e 99, o
bloco abaixo é acionado
//executando tudo o que
contem nele
if ( qnt > -1 && qnt <= 99 ) {
Toolkit.getDefaultToolkit ( ).beep ( );
a++;
vet [ a ] = qnt;
fill_Array ( vet );
}
}
}
} );
root.getChildren ( ).addAll ( hbox_1 );
return qnt;
}
//
/////////////////////////////////////////////////////////////////////////
public void start ( Stage stage ) {
int [ ] vet = new int [ 100 ];
stage.setTitle ( "JAVAFX -
PREENCHENDO ARRAY COM TEXTFIELD" );
// Dando uns efeitos na moldura
root.setStyle ( "-fx-padding:
5;"
+ "-fx-border-style:
solid inside;"
+ "-fx-border-width:
12;"
+ "-fx-border-insets:
5;"
+ "-fx-border-radius:
5;"
+ "-fx-border-color:
blue;" );
//Com este comando a tela não se espande
stage.setResizable ( false );
fundo ( );
ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "Total de números
à inserir no array", 80, 80 );
root.getChildren ( ).add ( canvas );
textFieldArr ( vet );
root.getChildren ( ).addAll ( borderPane );
stage.setScene ( scene );
stage.show ( );
}
//
/////////////////////////////////////////////////////////////////////////
public static void main ( String [ ] args ) {
Application.launch ( args );
}
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.