é hora de voltar a programar,
E pra selar nossa volta venho
mostrando um exemplo de como usar
o Accordion do JavaFx.
Um Accordion é um grupo de TitlePanes.
Mas apenas um TitledPane pode ser aberto por vez.
O conteúdo do TitledPane em um Accordion pode ser
qualquer Nó, como controles de interface do usuário
ou grupos de nós adicionados a um contêiner de layout.
Alguns testes mostraram Um comportamento
inesperado ao tentar utilizar os métodos
MinHeight, PrefHeight ou MaxHeight para
controlar as interfaces, isto ocorre
porque a altura do Accordion muda quando um
TitledPane é aberto ou fechado.
Portanto descarto rapidamente estas opções.
Veja abaixo imagens do programa em execução:
Veja abaixo um vídeo com o funcionamento do programa:
Veja abaixo o código do programa:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Accordion;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TitledPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import javafx.util.Duration;
public class PROJETO extends Application {
Pane root = new Pane ( );
static Canvas canvas = new Canvas ( 640, 350 );
Scene s1 = new Scene ( root, 640, 350, Color.WHITE );
static GraphicsContext ctx = canvas.getGraphicsContext2D ( );
//
criando o Accordion
Accordion accordion = new Accordion ( );
public static Button btn_1 = new Button ( );
public static Button btn_2 = new Button ( );
public static Button btn_3 = new Button ( );
//
/////////////////////////////////////////////////////////////////////////
static class cl {
public static void Informe ( ) {
ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "Por: ", 250, 275 );
ctx.setFill ( Color.BLUE );
ctx.fillText ( "Samuel
Lima", 280, 275 );
ctx.setFill ( Color.BLACK );
ctx.fillText ( "sa_sp10@hotmail.com", 250, 290 );
}
public static Node Button ( ) {
btn_1.setPrefWidth ( 60 );// Largura do botão
btn_1.setLayoutX ( 285 );// Posição do botão
coluna
btn_1.setPrefHeight ( 20 );// altura do botão
btn_1.setLayoutY ( 200 );// //Posição do botão
linha
btn_1.setStyle ( "-fx-padding:
1;" + "-fx-border-style: solid inside;"
+ "-fx-border-width:
2;" + "-fx-border-insets: 1;"
+ "-fx-border-radius:
1;" + "-fx-border-color: white;");
btn_1.setOnAction ( new EventHandler < ActionEvent > ( ) {
@Override
public void handle ( ActionEvent event ) {
RotateTransition rotate = new RotateTransition ( );
// Definindo a duração
da transição
rotate.setDuration ( Duration.millis ( 1000 ) );
// Configurando o nó
para a transição
rotate.setNode ( btn_1 );
// Ajustando o eixo da
rotação
rotate.setAxis ( Rotate.Y_AXIS );
// Ajustando o ângulo
da rotação
rotate.setByAngle ( 360 );
// Definindo a
contagem de ciclos para a
// transição
rotate.setCycleCount ( 50 );
// Configurando o
valor do reverso automático
// para falso
rotate.setAutoReverse ( false );
rotate.play ( );
}
} );
return btn_1;
}
}
//
////////////////////////////////////////////////////////////////////////
@Override
public void start ( Stage s ) throws FileNotFoundException {
s.setTitle ( "JAVAFX -
ACCORDION COM ÍCONES" );
// Criando moldura e aplicando efeitos
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: darkblue;" );
ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
ctx.setFill ( Color.RED );
ctx.fillText ( "JAVAFX -
ACCORDION COM ÍCONES", 190, 40 );
Image image_1 = new Image ( new FileInputStream (
"H:\\eclipse -
luna java\\PROJETOS\\PROJETO\\src\\Foto\\França.png" ) );
Image image_2 = new Image ( new FileInputStream (
"H:\\eclipse -
luna java\\PROJETOS\\PROJETO\\src\\Foto\\Croácia.png" ) );
Image image_3 = new Image ( new FileInputStream (
"H:\\eclipse -
luna java\\PROJETOS\\PROJETO\\src\\Foto\\Belgica.png" ) );
TitledPane t1 = new TitledPane ( " França é
bicampeã mundial", cl.Button ( ) );
TitledPane t2 = new TitledPane ( "Croácia é
vice campeã 2018",
new Label ( "A sensação
da\ncopa do mundo\n de 2018\n" ) );
TitledPane t3 = new TitledPane ( "A Belgica
ficou em 3º lugar",
new Button ( "Nossos parabéns\n
pra você Belgica" ) );
// Adicionando ícones ao TitledPane
t1.setGraphic ( new ImageView ( image_1 ) );
t2.setGraphic ( new ImageView ( image_2 ) );
t3.setGraphic ( new ImageView ( image_3 ) );
//Endereço para abrir imagem
Image image = new Image ( new FileInputStream (
"H:\\eclipse -
luna java\\PROJETOS\\PROJETO\\src\\Foto\\França.png" ) );
btn_1.setGraphic ( new ImageView ( image ) );
//Defini estas medidas por padrão
//Evitando um dimensionamento automático
accordion.setMinSize ( 315, 300 );
// Posiciona o accordion na horizontal
accordion.setLayoutX ( 110 );
// Posiciona o accordion na vertical
accordion.setLayoutY ( 70 );
// Adicionando todas as abas
accordion.getPanes ( ).addAll ( t1, t2, t3 );
cl.Informe ( );
//Adicionando o accordion junto com o canvas
//Para que entrem em sicronia
root.getChildren ( ).addAll ( canvas, accordion );
s.setScene ( s1 );
s.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.