Este duplo contador faz suas contagens
entre 0 e 59 com retorno.
O código é didático e serve como auxílio
para aplicações onde se necessita de
um bom contador.
Veja um vídeo do programa funcionando:
Veja abaixo o código do programa:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.stage.Stage;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.event.EventHandler;
import javafx.scene.paint.Color;
import javafx.util.Duration;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.animation.*;
/////////////////////////////////////////////////////////////////////////////
public class PROJETO extends Application {
private static Timeline videoTick_1;
static int a = 0, b = 0, c = 0, d = 0, k = 0, w = 0;
static String str_0 = "";
static String str_1 = "";
static Canvas canvas = new Canvas ( 490, 310 );
static GraphicsContext ctx = canvas.getGraphicsContext2D
( );
static BorderPane borderPane = new BorderPane ( );
static Pane ro_ot = new Pane ( );
static Scene sce_ne = new Scene ( ro_ot, 490, 310, Color.WHITE );
static Text text1 = new Text ( ) ;
//
/////////////////////////////////////////////////////////////////////////
public static int Apaga ( int tam_lin_ini, int tam_lin_fim,
int tam_ini_col, int tam_fim_col, int cp, int at ) {
int i, c;
for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {
for ( c = tam_ini_col; c < tam_fim_col; c++ ) {
// Coluna, linha,
comprimento, altura
ctx.clearRect ( c, i, cp, at );
}
}
return 0;
}
////////////////////////////////////////////////////////////////////////////
//Abaixo a função usada como clock criada por
mim
public static int Sleep_1 ( int x ) {
ctx.setFont ( Font.font ( "Tahoma", FontWeight.NORMAL, 40 ) );
Duration duration = Duration.millis ( x );
do{
videoTick_1 = new Timeline ( new KeyFrame ( duration,
new EventHandler < ActionEvent > ( ) {
public void handle ( ActionEvent actionEvent ) {
w += str_0.length ( );
str_0 += k;
Apaga ( 220, 260, 0, 230 - w, 150, 60 );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "0", 218, 250 );
if ( k > 9 ) {
//Apaga está apagando
o "0" acima imprimido
//quando o contador
chega no 10
Apaga ( 220, 260, 210, 300 - w, 150, 60 );
a = 25;
}
text1.setStyle("-fx-font:
normal bold 20px 'serif' ");
ctx.setFill ( Color.BLUE );
ctx.fillText ( str_0, 240 - a, 250 );
str_0 = str_0.substring ( 0, w );
k++;
System.out.println ( k );
if ( k == 60 ){
//As variáveis são
resetadas para
// o retorno do
contador
k = 0;
a = 0;
}
b += str_1.length ( );
str_1 += c;
ctx.setFill ( Color.RED );
ctx.fillText ( "0", 278, 250 );
if ( c > 9 ) {
//Apaga está apagando
o "0" acima imprimido
//quando o contador
chega no 10
Apaga ( 220, 260, 270, 300 - b, 150, 60 );
d = 25;
}
text1.setStyle("-fx-font:
normal bold 20px 'serif' ");
ctx.setFill ( Color.RED );
ctx.fillText ( str_1, 300 - d, 250 );
str_1 = str_1.substring ( 0, b );
c++;
System.out.println ( c );
if ( c == 60 ){
//As variáveis são
resetadas para
// o retorno do
contador
c = 0;
d = 0;
}
}
} ) );
videoTick_1.setCycleCount ( Animation.INDEFINITE );
videoTick_1.playFromStart ( );
return k;
}while ( true );
}
////////////////////////////////////////////////////////////////////////////
public void start ( Stage stage ) {
stage.setTitle ( "JAVAFX -
CONTADOR CRESCENTE ATÉ 59" );
// Dando uns efeitos na moldura
ro_ot.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;" );
ctx.setFont ( Font.font ( "Tahoma", FontWeight.NORMAL, 15 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "JAVAFX -
CONTADOR CRESCENTE ATÉ 59", 120, 60 );
Sleep_1 ( 1000 );
ro_ot.getChildren ( ).addAll ( canvas, borderPane );
stage.setScene ( sce_ne );
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.