Galera, eu tenho dois radio buttons no meu menu, inglês e português, para o usuário mudar o idioma da aplicação.
Eu quero que, se o botão já estiver selecionado, apareça uma mensagem dizendo que o programa já se encontra nesta linguagem. Entretanto, quando eu faço essa verificação dentro do actionPerformed associado aos botões ( radioExemplo.isSelected() ) o retorno é sempre true. Então mesmo se aquele botão não estiver pré-selecionado, ao clicar sobre ele, a mensagem irá aparecer do mesmo jeito (o que eu não quero).
Qual outro evento eu posso associar ao botão para que eu possar verificar se ele já estava selecionado? Eu já tentei vários e nenhum funcionou.
Detalhe: eu uso o netbeans.
estou assumindo que seja JavaFX.
você setou a propriedade “Toggle Group” com o mesmo valor para os dois radio?
creio que se setar esta propriedade igual para ambos vá funcionar da maneira que vc quer.
Assumiu certo, desculpe não informar (sou iniciante).
Pode me explicar essa propriedade? Eu não a conheço.
aqui vc encontra varios exemplos de como usar:
http://www.java2s.com/Tutorials/Java/JavaFX/0420__JavaFX_RadioButton.htm
se apos ler e testar post aqui novamente o que não conseguir que lhe ajudo.
Agora meu problema agora é outro. Eu não sei se ficou claro qual ele é, então vou explicar melhor.
Eu preciso pegar o estado de um botão( se está selecionado ou não) logo depois de clicar sobre ele mas antes de ele ser setado como selecionado.
Por exemplo, eu clico no botão radio “ingles” e logo em seguida, com actionPerformed, verifico if( ingles.isSelected() ). O problema é que sempre retorna true. Então eu associei essa verificação ao mousePressed, mas na hora que minha mensagem de diálogo aparece é necessário clicar duas vezes sobre ela, uma pra ela ganhar o foco e outra para dar o ok e fechar a mensagem.
Eu não estou conseguindo retornar o foco para a mensagem de diálogo.
Imagem do meu menu onde “English” e “Portuguese” são radios:
Parte do código associada ao evento mousePressed:
if(menuItem_Pt_Br.isSelected()) {
jMenu1.setPopupMenuVisible(false);
jMenu2.setPopupMenuVisible(false);
JOptionPane.showMessageDialog(this, idioma.getProperty(“msgIdiomSelected”),
“Aviso”, JOptionPane.WARNING_MESSAGE);
}
O que acontece quando eu seleciono um idioma que é igual ao do programa (note a opção “Options” selecionada mesmo com a mensagem aberta):
Eu faria o seguinte:
Se eu selecionar a língua inglesa, dou um setEnabled(false)
naquele campo e um setEnabled(true)
no de português. Assim não é possível selecionar / desselecionar.
E se eu selecionar o da língua portuguesa, eu dou um setEnabled(true)
no inglês e um setEnabled(false)
no português.
Solução fácil e funcional (na minha opinião, claro), não sei se isso serve para você, mas o resultado é praticamente o mesmo. Se não servir, comenta aí.
Muito obrigado Matheus, não tinha pensado nisso! Eu compliquei demais, era isso o que eu queria. Valeu mesmo
seque uma alternativa.
@FXML
private RadioMenuItem rdIn;
@FXML
private RadioMenuItem rdPt;
private String idioma="pt";
@FXML
private void onSelIndiomaClick(ActionEvent event) {
if ((rdIn.isSelected())&&(!idioma.equals("in"))){
idioma = "in";
System.out.println("trocando idioma... para in");
}else if ((rdPt.isSelected()&&(!idioma.equals("pt"))) ){
idioma = "pt";
System.out.println("trocando idioma... para pt");
}
}
abaixo segue fxml favor substituir “<” por <, não sonsegui postar sem essa gambi.
"<“Pane maxHeight=”-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight=“400.0” prefWidth=“600.0” xmlns=“http://javafx.com/javafx/8” xmlns:fx=“http://javafx.com/fxml/1” fx:controller=“br.com.help.help.FXMLController”>
"<“children>
”<“MenuBar layoutY=“2.0”>
”<“menus>
”<“Menu mnemonicParsing=“false” text=“File”>
”<“items>
”<“RadioMenuItem fx:id=“rdIn” mnemonicParsing=“false” onAction=”#onSelIndiomaClick" text=“INGLES”>
"<“toggleGroup>
”<“ToggleGroup fx:id=“TG” />
”<’/toggleGroup>
"<’/RadioMenuItem>
"<“RadioMenuItem fx:id=“rdPt” mnemonicParsing=“false” onAction=”#onSelIndiomaClick" selected=“true” text=“PORTUGUES” toggleGroup="$TG" />
"<"/items>
"<"/Menu>
"<‘Menu mnemonicParsing=“false” text=“Edit”>
"<‘items>
"<“MenuItem mnemonicParsing=“false” text=“Delete” />
”<’/items>
"<"/Menu>
"<“Menu mnemonicParsing=“false” text=“Help”>
”<“items>
”<“MenuItem mnemonicParsing=“false” text=“About” />
”<"/items>
"<"/Menu>
"<’/menus>
"<’/MenuBar>
"<"/children>
"<"/Pane>
outra coisa esta mostranso message em swing… segue link para fazer o mesmo em javafx