Oi, gente
Não sei se esse tópico é avançado, mas alguém sabe como traduzir os botões yes/No do JOptionPane??
Obrigada,
Camila
Oi, gente
Não sei se esse tópico é avançado, mas alguém sabe como traduzir os botões yes/No do JOptionPane??
Obrigada,
Camila
Oi Camila,
O Java ainda nao suporta os chamados Locales, ou i18n, que permitem a traducao automatica das mensagens e textos com base na linguagem configurada no sistema operacional.
A Sun, durante o Sun Tech Days ( que ocorreu no final do ano passado ), fez uma pesquisa em relacao a isso, entao eh provavel que isso venha fazer parte do Java em algum release futuro.
Mas, por enquanto, nao eh possivel.
Rafael
Camila…
eh possivel traduzir sim as opcoes da msg…
basta construir um vetor de strings (String[]) contendo as suas opcoes…
depois passe esse vetor como parametro no construtor da JOPtionPane…
Ok, mas isso tem que ser feito no braco, e nao sao todos os componentes que da para fazer isso. De maneira automatica, com base no idioma do SO, ainda nao tem como fazer isso.
Rafael
UIA!
Como vocês descobrem essas coisas???
De passar vetor?? Tipo… no exemplo de JavaMail do site também tem um esquema desse… vocês trocam uma idéia com o cara que inventou o Java é?? huahuahuahu
Oi…
Desculpe a minha ignorância, mas não entendi direito o funcionamento desse negocio… passei o vetor como parametro mas não deu nada…
tem como vc me mandar um exemplozinho??
obrigadinha!
Camila
Camila:
Faça assim:
String[] opcoes = {"Sim",Não"};
//depois vc coloca no JOptionPane
JOptionPane.showMessageDialog(jframeTeste,"Titulo da Caixa da OptionPane","Mensagem",<tipo da JOptionPane.YES_NO OPTION,opcoes,null);
Em relação ao YES_NO OPTION não sei se eh assim mesmo, mas no caso, ali é o tipo da caixa de JOptionPane que vc esta criando, no caso eh aquela caixa de confirmação Yes/No…
Espero ter ajudado…
ate mais
Você pode também, e acho que o é melhor a ser feito é utilizar a classe UIManager:
UIManager.put("OptionPane.yesButtonText", "Sim");
UIManager.put("OptionPane.noButtonText", "Não");
Com esse código fica fácil gerenciar todas as caixas de diálogo que quizer.
No UIManager tem várias coisas que se pode traduzir não somente caixas de diálogo.
Acho que por isso a Sun não se preocupou tanto com ativar os métodos setLocale que deveriam pegar o idioma do SO.
UIManager.put() é um método estático então não precisa de se criar uma instância e sim executá-lo onde necessário.
Dica: Execute esse método no seu JFrame principal antes do método initComponents(), com isso os JOptionPane (ConfirmDialog, OptionDialog, MessageDialog) respeitarão o que foi definido no UIMangager.put, independente do formulário que esteja, pois o mesmo é filho do formulário principal.
CARACAAAA … QUE TOP!
AUHSUDHAUS
Demais… show de bola… em duas linhas um problemão é resolvido…
Por que vc não um JOptionPane.showOptionDialog. Que seria +/- assim se não me ingano.
Object Botoes[] = {" Sim ", " Não "};
JOptionPane.showOptionDialog(null, "Messagem a Apresentar ", "Titulo",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, //Aqui nesse último parametro vc escolhe que tipo de pane gostaria que fosse apresentado. Geralmente uso WARNING_MESSAGE, QUESTION_MESSAGE, ERROR_MESSAGE , INFORMATION_MESSAGE E PLAIN_MESSAGE
null, Botoes, Botoes[0]); //O segundo parametro dessa linha é o vetor de objetos criados. E o ultimo parametro é em qual das posições do vetor você gostaria de dar o foco.
Você prefere criar isso toda vez que for usar um OptionPane:
Object Botoes[] = {" Sim ", " Não "};
JOptionPane.showOptionDialog(null, "Messagem a Apresentar ", "Titulo",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, //Aqui nesse último parametro vc escolhe que tipo de pane gostaria que fosse apresentado. Geralmente uso WARNING_MESSAGE, QUESTION_MESSAGE, ERROR_MESSAGE , INFORMATION_MESSAGE E PLAIN_MESSAGE
null, Botoes, Botoes[0]); //O segundo parametro dessa linha é o vetor de objetos criados. E o ultimo parametro é em qual das posições do vetor você gostaria de dar o foco.
ou
Executar esse código no formulário principal, pois a partir daí todos os OptionPane(ConfirmDialog, MessageDialog, OptionDialog, InputDialog) vão respeitar:
UIManager.put("OptionPane.yesButtonText", "Sim");
UIManager.put("OptionPane.noButtonText", "Não");
UIManager.put("OptionPane.cancelButtonText", "Cancelar");
ou criar uma classe que foi o meu caso, pois precisava de mais traduções e outras funcionalidades da classe UIManager:
[code]import java.awt.Color;
import javax.swing.UIManager;
public class EventosTela
{
public static void executar()
{
/*---------------------------------------------------------------*/
/*----------------------Eventos Combobox-------------------------*/
/*---------------------------------------------------------------*/
UIManager.put("ComboBox.disabledForeground", Color.BLACK);
/*---------------------------------------------------------------*/
/*---------------------------------------------------------------*/
/*--------------------Eventos FileChooser------------------------*/
/*---------------------------------------------------------------*/
UIManager.put("FileChooser.lookInLabelMnemonic", new Integer('E'));
UIManager.put("FileChooser.lookInLabelText", "Examinar em:");
UIManager.put("FileChooser.saveInLabelText", "Salvar em:");
UIManager.put("FileChooser.fileNameLabelMnemonic", new Integer('N'));
UIManager.put("FileChooser.fileNameLabelText", "Nome do arquivo:");
UIManager.put("FileChooser.filesOfTypeLabelMnemonic", new Integer('T'));
UIManager.put("FileChooser.filesOfTypeLabelText", "Tipos de arquivo:");
UIManager.put("FileChooser.upFolderToolTipText", "Um nível acima");
UIManager.put("FileChooser.upFolderAccessibleName", "Um nível acima");
UIManager.put("FileChooser.homeFolderToolTipText", "Área de trabalho");
UIManager.put("FileChooser.homeFolderAccessibleName", "Área de trabalho");
UIManager.put("FileChooser.newFolderToolTipText", "Nova pasta");
UIManager.put("FileChooser.newFolderAccessibleName", "Nova pasta");
UIManager.put("FileChooser.listViewButtonToolTipText", "Lista");
UIManager.put("FileChooser.listViewButtonAccessibleName", "Lista");
UIManager.put("FileChooser.detailsViewButtonToolTipText", "Detalhes");
UIManager.put("FileChooser.detailsViewButtonAccessibleName", "Detalhes");
UIManager.put("FileChooser.fileNameHeaderText", "Nome");
UIManager.put("FileChooser.fileSizeHeaderText", "Tamanho");
UIManager.put("FileChooser.fileTypeHeaderText", "Tipo");
UIManager.put("FileChooser.fileDateHeaderText", "Data");
UIManager.put("FileChooser.fileAttrHeaderText", "Atributos");
UIManager.put("FileChooser.saveButtonText", "Salvar");
UIManager.put("FileChooser.cancelButtonText", "Cancelar");
UIManager.put("FileChooser.openButtonText", "Selecionar");
UIManager.put("FileChooser.acceptAllFileFilterText", "Todos Arquivos (*.*)");
UIManager.put("FileChooser.openDialogTitleText", "Abrir");
UIManager.put("FileChooser.saveDialogTitleText", "Salvar");
/*---------------------------------------------------------------*/
/*---------------------------------------------------------------*/
/*--------------------Eventos OptionPane-------------------------*/
/*---------------------------------------------------------------*/
UIManager.put("OptionPane.cancelButtonText", "Cancelar");
UIManager.put("OptionPane.noButtonText", "Não");
UIManager.put("OptionPane.okButtonText", "Ok");
UIManager.put("OptionPane.yesButtonText", "Sim");
/*---------------------------------------------------------------*/
}
}[/code]
aí é só executar esse método estático no seu formulário principal:
EventosTela.executar();// Caso sua aplicação tenha uma tela de Login execute esse código nela, pois é o primeiro formulário alocado na memória
e ainda quando for criar um OptionPane não coloquem “null”, coloquem “this”, dessa forma você informa para o OptionPane que ele pertence ao JFrame, JDialog, etc que o chamou colocando ele na frente do mesmo, considerando que já executaram a classe que criei ou o método “put” da classe “UIManager” ficaria assim:
JOptionPane.tipo do seu dialog(this, "Mensagem ao usuário", "Titulo da Mensagem", tipo de iteração);
O tipo de dialog pode ser:
OptionDialog
ConfirmDialog
MessageDialog
InputDialog
O tipo de iteração pode ser:
[code]//Opções de MessegaDialog
JOptionPane.ERROR_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.PLAIN_MESSAGE // Sem ícone
JOptionPane.WARNING_MESSAGE[/code]
[code]//Opções de InputDialog
JOptionPane.QUESTION_MESSAGE[/code]
//Opcões de ConfirmDialog e OptionDialog
JOptionPane.YES_NO_OPTION
JOptionPane.YES_NO_CANCEL_OPTION
JOptionPane.OK_CANCEL_OPTION
lcbrito cara qual é o FIELD do mnemonico do OptionPane tentei fazer da forma:
UIManager.put(“OptionPane.yesButtonText”, new Integer(ALFABETICO_S));
mas não funcionou qual seria?