relógios digitais, temporizadores,
ou qualquer programa onde se necessite
de um contador digital, apresento-lhes
este excelente contador ascendente e descendente
infinito e com retorno.
Este ótimo programa ainda conta com um botão
de duas funções, programado para pausar e continuar
o contador em pleno funcionamento, modificando
a cor do botão, dando a idéia de um botão apagado,
possui ainda, um placar digital colocado no canto
superior direito para indicar uma volta completa,
com isto, a cada subida e descida ele marca no placar
o número dos ciclos feitos, e isto segue infinitamente,
salvo se o usuário fechar o programa.
Bons programadores de java, e que já possuem bons
conhecimentos em JavaFX, tem plena liberdade de
fazerem modificações neste projeto a fim de que
se enquadre as suas pretensões, mas não se esqueçam
dos créditos ao autor do projeto que sou eu mesmo.
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.scene.paint.Color;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.event.ActionEvent;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.event.EventHandler;
import javafx.util.Duration;
import javafx.animation.*;
import javafx.scene.input.MouseEvent;
public class PROJETO extends Application {
private Timeline videoTick;
int i = 0, k = 0, l = 1, load = 1000;
Boolean y = false;
Canvas canvas = new Canvas ( 620, 350 );
GraphicsContext ctx = canvas.getGraphicsContext2D
( );
Pane root = new Pane ( );
Scene scene = new Scene ( root, 620, 350,Color.BLACK );
Text t_2 = new Text ( );
Text t_3 = new Text ( );
Circle btn_1 = new Circle ( 150, 300, 20 );
////////////////////////////////////////////////////////////////////////////
public void Informe ( ) {
t_2.setX ( 200 );
t_2.setY ( 290 );
t_2.setFill ( Color.WHITE );
t_2.setText ( "Por: Samuel
Lima\n"
+ "sa_sp10@hotmail.com\n"
+"\t\tMUITO
OBRIGADO");
//Colocando efeito na fonte com css
t_2.setStyle ( "-fx-font-style:
italic;"
+ "-fx-font-size:
15px;"
+ "-fx-font-weight:
bold;"
+ " -fx-effect:
innershadow( three-pass-box ,"
+ "
rgba(0,0,0,0.7) , 6, 0.0 , 0 , 4 );");
}
//
/////////////////////////////////////////////////////////////////////////
public void button_person_1 ( ) {
EventHandler < MouseEvent > eventHandler_1 =
new EventHandler < MouseEvent > ( ) {
@Override
public void handle ( MouseEvent e ) {
if ( i == 0 ) {
videoTick.pause ( );
System.out.println ( "Pausado" );
btn_1.setFill ( Color.rgb ( 29, 111, 0 ) );
i++;
} else {
videoTick.play ( );
System.out.println ( "Ligado" );
btn_1.setFill ( Color.rgb ( 0, 255, 0 ) );
i = 0;
}
}
};
btn_1.setFill ( Color.rgb ( 0, 255, 0 ) );
btn_1.addEventFilter ( MouseEvent.MOUSE_CLICKED, eventHandler_1 );
}
//
/////////////////////////////////////////////////////////////////////////
//Método usado como clock criado por mim
public int Sleep ( int x ) {
Duration duration = Duration.millis ( x );
videoTick = new Timeline ( new KeyFrame ( duration,
new EventHandler < ActionEvent > ( ) {
public void handle ( ActionEvent actionEvent ) {
//Usando fonte em
italic
ctx.setFont ( Font.font ( "alarm
clock", FontWeight.NORMAL, 150 ) );
//Coluna, linha,
comprimento, altura
ctx.clearRect ( 50, 70, 1000, 300 );
if ( k < 10 ) {
ctx.setStroke ( Color.LIME );
ctx.setLineWidth ( 4.0 );
ctx.setFill ( Color.LIME );
ctx.fillText ( "0", 270, 230 );
ctx.strokeText ( "0", 270, 230 );
ctx.setStroke ( Color.LIME );
ctx.setLineWidth ( 4.0 );
ctx.setFill ( Color.LIME );
ctx.fillText ( " " + k, 270, 230 );
ctx.strokeText ( " " + k, 270, 230 );
} if ( k > 9 ) {
ctx.setStroke ( Color.LIME );
ctx.setLineWidth ( 4.0 );
ctx.setFill ( Color.LIME );
ctx.fillText ( " " + k, 180, 230 );
ctx.strokeText ( " " + k, 180, 230 );
} if ( k >= 0 && y == false ) {
k++;
} if ( y == true ) {
k--;
if ( k == 0 ) {
y = false;
l++;
}
} if ( y == false && k == 21 ) {
k = 19;
y = true;
} if ( y == true ) {
t_3.setFont ( Font.font ( "alarm
clock", FontWeight.NORMAL, 50 ) );
t_3.setX ( 480 );
t_3.setY ( 100 );
t_3.setFill ( Color.RED );
t_3.setText ( " " + l );
}
}
} ) );
videoTick.setCycleCount ( Animation.INDEFINITE );
videoTick.playFromStart ( );
return k;
}
//
/////////////////////////////////////////////////////////////////////////
public void start ( Stage stage ) {
stage.setTitle ( "JAVAFX -
CONTADOR ASCENDENTE E DESCENDENTE" );
//Usando fonte em italic
ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
FontPosture.ITALIC, 22 ) );
//Criando moldura em css
root.setStyle ( "-fx-padding:
5;"
+ "-fx-border-style:
solid inside;"
+ "-fx-border-width:
10;"
+ "-fx-border-insets:
5;"
+ "-fx-border-radius:
5;"
+ "-fx-border-color:
yellow;");
ctx.setFill ( Color.RED );
ctx.fillText ( "JAVAFX -
CONTADOR ASCENDENTE E DESCENDENTE", 36, 50 );
button_person_1 ( );
Sleep ( load );
Informe ( );
root.getChildren ( ).addAll ( canvas, t_2, t_3, btn_1 );
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.