[RESOLVIDO].Jar baixado do site da Gluon, não abre!

j-menezes, valeu!!! Eu baixei e instalei antes a versão para windows 64b, aí como estou “mais que perdido” em javafx e scenebuilder no netbeans baixei esse kit imaginando que pudesse me ajudar e tinha documentação…aí aumentaram meus problemas…rs
Vc acha que para um iniciante é melhor eu esquecer esse kit?
O que tem nele?

desculpe a longa história!

Esquecer o kit !? isso sempre depende do que deseja fazer.
Se pretende apenas desenhar as telas no sceneBuilder, sim esqueça o kit.

Estou aprendendo agora , mas minha intenção é desenhar as telas no sceneBuilder junto com o Netbeans!

Voce desenha a tela dentro do SceneBuilder, mas claro que poderá fazer a tela por codigo sem o SceneBuilder.
Uma vez desenhada a tela no SceneBuilder, dentro do programa javaFX você chama essa tela desenhada atraves da extensão fxml.E pronto.

j-menezes, agora entendi um pouco e parece facil de fazer, mas não pra mim ainda, que
nem teria ideía de como chamar essa tela!

pelo que vi no curso em video, do java para iniciantes, se eu criasse uma aplicação fx, o netbeans mesmo criaria a pasta controller e fxml, mas com essa versão que tenho não faz isso!
Estou usando o netbeans 11 e jdk12

mais uma vez, obrigado pela paciencia !

E’ realmente bem simples, basta seguir a receitinha.

(no netbeans 11 e jdk 12 voce deve criar um projeto modular)
1.New Project
1.1 Java with Ant
1.1.1 Java Modular Project

Obs : ( No Projeto com o botao direito do mouse ) Properties / Libraries / Compile / Module Path [+] (Add jar / folder) <-- uma forma apenas

exemplo veja se tudo esta dentro desse diretorio
javafx-sdk-12.0.1/lib
javafx.base.jar // essa
javafx.controls.jar // supondo que usara essa
javafx.fxml.jar // supondo que usara essa
javafx.graphics.jar // supondo que usara essa
javafx.media.jar
javafx.swing.jar
javafx-swt.jar
javafx.web.jar

Dentro do Projeto
2 New Module ( Com o botao direito do mouse )
2.1 vou dar uma nome para teste meuModulo
2.2 procure por module-info.java // meuModulo – classes – default package
module-info.java
2.3 dentro dele coloca

module meuModulo {
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.graphics;
    
    exports meutest.com;   // sao os packages do seu modulo que serão visiveis 

    opens meutest.com to javafx.fxml;  // se for alterar propriedades  dos componentes 
}

3.Quando voce cria um modulo no netbeans 11, ele não esta aparecendo a opçao
New File --> Empty FXML
então nesse caso você simplesmente abre o SceneBuilder e cria o seu FXML e Save As dentro da pasta do projeto meutest com de maneira que no netbeans apareça
–> meutest.com
-----> minhaTela.fxml // escolha o nome que quiser

4.agora chegamos no ponto que você queria saber, porem trabalhar com modulos no java 11 e superior é um pouco deferente, e tem muitas vantagens.

(Agora toda vez que for mudar a tela usa botao direito do mouse --> Open ou edit para alterar alguma coisa na mão dentro do FXML)
A opção Make Controller // botao direito do mouse, criará um arquivo java para controlar essa tela em questão e liga-la com seus programas.

  1. Resta apenas saber como chamar esse controller

     package meutest.com;
    
         import javafx.application.Application;
         import javafx.fxml.FXMLLoader;
         import javafx.scene.Parent;
         import javafx.scene.Scene;
         import javafx.scene.image.ImageView;
         import javafx.scene.layout.StackPane;
         import javafx.stage.Stage;
    
    
         public class TelaFXML extends Application {
             
    
             @Override
             public void start(Stage stage) throws Exception {
                 stage.setTitle("Test FXML");
                 
                 
                 FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("minhaTela.fxml"));
                 Parent parent = (Parent)fxmlLoader.load();
    
               // O nome do programa Tela1Controller, foi Make Controller do netbeans quem deu e criou o programa
                 MinhaTelaController telacontroller = fxmlLoader.getController();
    
                 Scene scene = new Scene(parent); 
                 stage.setScene(scene);
                  
                 stage.show(); 
             }
             
             
             public static void main(String[] args) {
                launch(args);
             }
         }
1 curtida

Estou tentando seguir sua receita, mas não entendi essa parte:

1)Como eu crio o “meutest.com”???

2)Eu criei um projeto modular com o nome OlaFx_Menezes e criei uma tela no Scene, em que pasta salvo o fxml?
Olha como está:
image

no netbeans basta criar um New package (Botao direito do mouse) no seu projeto

1 curtida

Já tentei colocar ele em todos os lugares! O erro não some!
olha só:

esse erro vai sumir assim que voce dar o make controller e ele irá criar um programa java ou mesmo voce criar ou colocar qualquer programa java no package.

1 curtida

Putz!!! Criei um arquivo do tipo Java Class, e coloquei o nome do pacote "meutest.com e o erro sumiu mesmo!!!
Perdi a manhã toda tentando corrigir!!! (bicho é bicho…kkkk)

Mas agora não entendi como fazer esse “Make Controller”.

E como criar o arquivo main, pq deu errado!

Bom !!! para usar o make Controller, clica com o botao direito do mouse sobre o minhaTela.fxml
E para criar um main ai dentro do package meutest.com, novamente com o botao direito em cima dele e new Java Class, entao basta colar o exemplo que postei.

1 curtida

Agora SIMM!!!
Finalmente apareceu a tela, pelo netbeans!!!
Muuuito obrigado pela paciencia!!!

Sempre devo colar esse seu exemplo na main ??? O controller fica vazio só com o package e public class???
Mas e para editar a tela e fazer as modificaçoes???

Não , não, Eu apenas enviei um exemplo de como se faz.
Em relação ao Controller estar vazio, a medida que voce for populando suas telas dar um nome para os componentes, criar eventos tudo dentro do sceneBuilder, voce usará novamente o make Controller aparecerá tudo dentro do programa MinhaTelaController.

Para modificar a tela vale o que eu expliquei logo lá no inicio; botao direito do mouse sobre minhaTela.fxml e Open. Depois de alterar Salva e no netbeans chama de novo make controller.

1 curtida

Vou tentar, mas por hoje já te perturbei demais!!!
muito obrigado mesmo!!!

1 curtida

j-menezes, desculpe te encher mais uma vez, porém, Montando o seu exemplo só tentei colocar um label e um botão, seguindo um video do descompila, que fica tudo igualzinho mas olha o erro que dá:

O detalhe é que, basta eu colocar um fx:id no botão, la no Scene que dá o erro

é mais um erro de novato???

1.Na minhaTela.fxml (Botao direito do mouse opcao Open)
2.Dentro do SceneBuilder clique no item que voce deseja e no lado direito selecione Code
3.na linha fx:id coloca um nome para essa variavel
4.Save <— nesse caso nao precisa ser Save As, isso porque ele vai salvar em cima do minhaTela.fxml que foi aberto
5. de volta no NetBeans
6. Na minhaTela.fxml (Botao direito do mouse opcao Make Controller)
7. Pronto, veja que dentro do MinhaTelaController.java aparecerá @FXML e logo abaixo o nome da variavel que você criou lá no SceneBuilder

1 curtida

Foi assim mesmo que eu fiz ontem! ( Umas 500 vezes…kkk)
Mas o erro continua!
Cheguei a pensar que poderia ser algum erro de vínculo entre o Scene e o NetBeans. Reparei o NetBeans, mas nada!
Alguma ideia?

Tenta criar outra tela fxml la no sceneBuilder coloca o nome nos componentes, fx:id, tem que clicar no componente que quer colocar o nome. depois lá no NetBeans usa Make Controller e veja se está gerando o @FXML.
Outra coisa, essa linha que está aparecendo com erro na MinhaTelaController.java apaga ela e usa o Make Controller novamente. E certifique que ao salvar lá no sceneBuilder se ele esta’ salvando corretamente no seu projeto dentro do netBeans.

Java para esse tipo de coisa é bem estável em todas as plataformas.

Ainda nada!!! Não sei o que há!
Fiz tudo novamente ( criei o programa do zero) e segui seus passos, mas a lista do erro é o mesmo.
O interessante é que quando faz o “Build eClean” não dá erro nenhum! ele compila normal!
Só na hora de executar é que dá o erro!
olha a lista (

< html> Exception in Application start method
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
	at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: javafx.fxml.LoadException: 
/C:/Users/Clodoaldo/Documents/NetBeansProjects/FxMenezes/build/modules/meuModulo/meutest/com/minhaTela.fxml:12

	at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2603)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
	at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
	at meuModulo/meutest.com.MeuMain.start(MeuMain.java:18)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
	at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
	at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
	... 1 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private javafx.scene.control.Label meutest.com.MinhaTelaController.lblMensagem accessible: module meuModulo does not "opens meutest.com" to module javafx.fxml
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:341)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:281)
	at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:176)
	at java.base/java.lang.reflect.Field.setAccessible(Field.java:170)
	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.addAccessibleFields(FXMLLoader.java:3479)
	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor$1.run(FXMLLoader.java:3444)
	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor$1.run(FXMLLoader.java:3440)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.addAccessibleMembers(FXMLLoader.java:3439)
	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.getControllerFields(FXMLLoader.java:3378)
	at javafx.fxml/javafx.fxml.FXMLLoader.injectFields(FXMLLoader.java:1170)
	at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processValue(FXMLLoader.java:865)
	at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:759)
	at javafx.fxml/javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2722)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
	... 12 more
Exception running application meutest.com.MeuMain
C:\Users\Clodoaldo\AppData\Local\NetBeans\Cache\11.0\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\Clodoaldo\AppData\Local\NetBeans\Cache\11.0\executor-snippets\run.xml:40: Java returned: 1
BUILD FAILED (total time: 2 seconds)
</html>

Detalhe: Antes da erro no minhaTela.fxml de tamanho da fonte, aí coloquei um label e button padarão, sem mudar nada, só mudei o fx:id…aí aparece o erro!

package meutest.com;

 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.scene.image.ImageView;
 import javafx.scene.layout.StackPane;
 import javafx.stage.Stage;

 public class MeuMain extends Application {
  
     @Override
     public void start(Stage stage) throws Exception {
         stage.setTitle("Test FXML");
                    
         FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("minhaTela.fxml"));
         Parent parent = (Parent)fxmlLoader.load();

       // O nome do programa Tela1Controller, foi Make Controller do netbeans quem deu e criou o programa
         MinhaTelaController  telacontroller = fxmlLoader.getController(); //MeuMakeController

         Scene scene = new Scene(parent); 
         stage.setScene(scene);
        stage.show(); 
     }
              
     public static void main(String[] args) {
        launch(args);
     }
 }

O Controller:

ackage meutest.com;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;

public class MinhaTelaController implements Initializable {

@FXML
private Label lblMensagem;

// private Button btnClique; // <==== ISTO CAUSA O PROBLEMA
@FXML
private Button btnBotao;

@Override
public void initialize(URL url, ResourceBundle rb) {
 }    

private void clicouBotao(ActionEvent event) {
    lblMensagem.setText("OLá Mundo");
 
}

}

e o FXML

> >
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <?import javafx.scene.control.Button?>
> <?import javafx.scene.control.Label?>
> <?import javafx.scene.layout.AnchorPane?>
> <?import javafx.scene.layout.VBox?>
> 
> <VBox prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meutest.com.MinhaTelaController">
>   <children>
>     <AnchorPane maxHeight="-1.0" maxWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
>          <children>
>             <Label fx:id="lblMensagem" layoutX="285.0" layoutY="79.0" text="Label" />
>             <Button fx:id="btnBotao" layoutX="273.0" layoutY="194.0" mnemonicParsing="false" text="Button" />
>          </children>
>     </AnchorPane>
>   </children>
> </VBox>