Pessoal, estou tendo uma tremenda dificuldade em implementar uma classe na qual eu consiga abrir uma janela com duas opções de seleção, poderia se uma JButton ou RadioButton. No momento em que eu selecionasse uma delas me seria retornado um valor.
Exemplo: Se eu tivesse um botão Calendario e outro Relógio e selecionasse o botão calendario me seria retornada a string 9B e caso selecionasse o botão relógio me seria retornada a string 9A. Agradeço se alguém puder me dar uma força.
seria um dialogo?
o codigo abaixo faz alguma coisa parecida
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = frame.getContentPane();
c.setLayout(new BorderLayout());
JButton b = new JButton("Abre");
b.setPreferredSize(new Dimension(100, 24));
c.add(b, BorderLayout.CENTER);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Container parent = ((JComponent) e.getSource()).getParent();
Object[] obj = {
"Sim" ,
"Não" ,
"Talvez" ,
"Não sei"
};
int index = JOptionPane.showOptionDialog(parent
, "Mensagem?"
, "Titulo"
, -1
, JOptionPane.QUESTION_MESSAGE
, null
, obj
, null);
if (index != -1)
System.out.println(obj[index]);
}
});
frame.pack();
frame.show();
}
Valeu pela ajuda fabiofalci vou testar o código que me mandastes.
Pessoal estou utilizando a sugestão do fabiofalci para tentar solucionar o meu problema:
[code]
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.;
import cs.utils.PropertiesLoader;
import java.awt.;
import java.awt.event.*;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;
public class Exemplo extends JFrame {
JButton botao = new JButton();
JTextField resultado = new JTextField();
public Exemplo() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
botao.setBounds(new Rectangle(43, 22, 109, 45));
botao.setText("Abre Janela");
botao.addActionListener(new Exemplo_botao_actionAdapter(this));
this.getContentPane().setLayout(null);
resultado.setText("");
resultado.setBounds(new Rectangle(36, 80, 121, 25));
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.getContentPane().add(botao, null);
this.getContentPane().add(resultado, null);
this.setSize(200, 200);
}
void botao_actionPerformed(ActionEvent e) {
resultado.setText(retornaOpcao());
}
public String retornaOpcao() {
Object[] possibleValues = { "Calendario", "Relogio" };
Object selectedValue = JOptionPane.showInputDialog(null,
"Selecione uma das opções", "Janela de opções",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
if (selectedValue.equals("Calendario"))
return "9B";
else
return "9A";
}
static Enumeration portList;
static CommPortIdentifier portId;
static SerialPort serialPort;
static OutputStream outputStream;
public static void main(String[] args){
String frame_="";
Properties prop = PropertiesLoader.loadProperties("configuration.properties");
portList = CommPortIdentifier.getPortIdentifiers();
String cabecalho_c = ("01020182");
StringBuffer cabecalho = new StringBuffer(cabecalho_c);
String cabecalhoHexToString = new String("");
for(int i = 0; i < cabecalho.length(); i += 2){
String cabecalhoTemp = cabecalho.substring(i, i + 2);
cabecalhoHexToString += new Character((char)(Integer.valueOf(cabecalhoTemp,16).intValue())).toString();
frame_=cabecalhoHexToString;
}
System.out.println("cabecalhoHexToString:" + cabecalhoHexToString);
//Aqui abre um JOptionPane para que o usuário digite a string
//na linha onde deseja que a mensagem seja inserida
JPanel painel = new JPanel();
JTextField texto1 = new JTextField(50);
JLabel label1 = new JLabel(" Mensagem:");
painel.add(label1);
painel.add(texto1);
painel.setLayout(new GridLayout(6,6));
JOptionPane.showMessageDialog(null, painel);
Exemplo ex = new Exemplo();
ex.show();
//Aqui atribui a variável digitar2 o conteúdo
//da variável texto1
String digitar2 = texto1.getText();
//Aqui verifica se a string digitar2 possui
//menos do que 10 caracteres, caso possua acrescenta
//espaços em branco até preencher estes 10 caracteres
while(digitar2.length()<10){
digitar2+=" ";
}
//Transformação de string para hexadecimal
//a variável digitar2 que contém uma string
//é convertida em valores hexadecimais e a variável
//digitar3 recebe estes caracteres
StringBuffer digitar3 = new StringBuffer();
for (int i = 0; i < digitar2.length(); i++) {
char ch = digitar2.charAt(i);
if (ch < 0x10)
digitar3.append('0'); // addiciona zero para numeros com só uma casa
digitar3.append(Integer.toHexString(ch & 0xFF));
}
//Aqui a variável digitar_string recebe o conteúdo
//da variável digitar3
String digitar_string = digitar3.toString(); // aqui só o codigo hexadecimal
//Transformação de hexadecimal para caracter
//a variável digitar_string_c que contém valores hexadecimais
//é convertida em caracter e a variável
//digitar_string_cHexToString recebe estes caracteres
StringBuffer digitar_string_c = new StringBuffer(digitar_string);
String digitar_string_cHexToString = new String("");
for(int i = 0; i < digitar_string_c.length(); i += 2){
String digitar_string_cTemp = digitar_string_c.substring(i, i + 2);
digitar_string_cHexToString += new Character((char)(Integer.valueOf(digitar_string_cTemp,16).intValue())).toString();
frame_=digitar_string_cHexToString;
}
//Aqui pega a string OBJETO do arquivo de propriedades
//(configuration.properties) e atribui a mesma para a string objeto
String objeto = prop.getProperty("OBJETO");
//String objeto = obj[index];
//Transformação de hexadecimal para caracter
//a variável linha1_c que contém valores hexadecimais
//é convertida em caracteres e a variável
//linha1_cHexToString recebe estes caracteres,
StringBuffer linha1_c = new StringBuffer(objeto);
String linha1_cHexToString = new String("");
for(int i = 0; i < linha1_c.length(); i += 2){
String linha1_cTemp = linha1_c.substring(i, i + 2);
linha1_cHexToString += new Character((char)(Integer.valueOf(linha1_cTemp,16).intValue())).toString();
frame_=linha1_cHexToString;
}
System.out.println("linha1_cHexToString:" + linha1_cHexToString);
while(digitar2.length()<10){
digitar2+=" ";
}
//Aqui soma a variável digitar2 mais 2 caracteres
//e atribui o seu conteúdo a variável cont
int cont = digitar2.length()+2;
//Aqui transformo o conteúdo da variável cont em string
//e atribuo este valor a variável cont2
String cont2 = String.valueOf(cont);
System.out.println("cont2:" + cont2);
//Aqui converte a variável cont de inteiro
//para string e a atribui a variável cont3
//fazendo um teste na mesma para verificar se ela
//possui somente um caracter e caso possua, acrescenta
//um 0 antes da mesma
String cont3 = Integer.toHexString(cont);
if (cont3.length() == 1){
cont3 = "0" + cont3;
}
System.out.println("cont3:" + cont3);
//Transformação de string para hexadecimal
//a variável cont2 que contém uma string
//é convertida em valores hexadecimais e a variável
//cont4 recebe estes caracteres
StringBuffer cont4 = new StringBuffer();
for (int i = 0; i < cont2.length(); i++) {
char ch = cont2.charAt(i);
if (ch < 0x10)
cont4.append('0'); // addiciona zero para numeros com só uma casa
cont4.append(Integer.toHexString(ch & 0xFF));
}
//Aqui a variável cont_string recebe o conteúdo
//da variável cont4
String cont_string = cont4.toString(); // aqui só o codigo hexadecimal
System.out.println("cont_string:" + cont_string);
//Converte a string cont_string_d de hexadecimal
//para decimal e atribui esta nova string a variável
//cont_string_dHexToString
StringBuffer cont_string_d = new StringBuffer(cont3);
String cont_string_dHexToString = new String("");
String frame1;
for(int i = 0; i < cont_string_d.length(); i += 2){
String cont_string_dTemp = cont_string_d.substring(i, i + 2);
cont_string_dHexToString += (Integer.parseInt(cont_string_dTemp,16));
frame_=cont_string_dHexToString;
}
System.out.println("cont_string_dHexToString:" + cont_string_dHexToString);
//Transformação de hexadecimal para caracter
//a variável cont_string_c que contém valores hexadecimais
//é convertida em caracter e a variável
//cont_string_cHexToString recebe estes caracteres
StringBuffer cont_string_c = new StringBuffer(cont3);
String cont_string_cHexToString = new String("");
for(int i = 0; i < cont_string_c.length(); i += 2){
String cont_string_cTemp = cont_string_c.substring(i, i + 2);
cont_string_cHexToString += new Character((char)(Integer.valueOf(cont_string_cTemp,16).intValue())).toString();
frame_=cont_string_cHexToString;
}
System.out.println("cont_string_cHexToString:" + cont_string_cHexToString);
//Transformação de string para hexadecimal
//a variável digitar2 que contém uma string
//é convertida em valores hexadecimais e a variável
//estringue1 recebe estes caracteres
StringBuffer estringue1 = new StringBuffer();
for (int i = 0; i < digitar2.length(); i++) {
char ch = digitar2.charAt(i);
if (ch < 0x10)
estringue1.append('0'); // addiciona zero para numeros com só uma casa
estringue1.append(Integer.toHexString(ch & 0xFF));
}
//Aqui a variável estringue_string recebe o conteúdo
//da variável estringue1
String estringue_string = estringue1.toString(); // aqui só o codigo hexadecimal
System.out.println("estringue_string:" + estringue_string);
//Transformação de hexadecimal para caracter
//a variável estringue_string_c que contém valores hexadecimais
//é convertida em caracter e a variável
//estringue_string_cHexToString recebe estes caracteres
StringBuffer estringue_string_c = new StringBuffer(estringue_string);
String estringue_string_cHexToString = new String("");
for(int i = 0; i < estringue_string_c.length(); i += 2){
String estringue_string_cTemp = estringue_string_c.substring(i, i + 2);
estringue_string_cHexToString += new Character((char)(Integer.valueOf(estringue_string_cTemp,16).intValue())).toString();
frame1=estringue_string_cHexToString;
}
System.out.println("estringue_string_cHexToString:" + estringue_string_cHexToString);
//Transformação de hexadecimal para caracter
//a variável fim_c que contém valor hexadecimal
//(03) é convertida em caracter e a variável
//fim_cHexToString recebe este caracter (3).
StringBuffer fim_c = new StringBuffer("03");
String fim_cHexToString = new String("");
for(int i = 0; i < fim_c.length(); i += 2){
String fim_cTemp = fim_c.substring(i, i + 2);
fim_cHexToString += new Character((char)(Integer.valueOf(fim_cTemp,16).intValue())).toString();
frame_ = fim_cHexToString;
}
System.out.println("fim_cHexToString:" + fim_cHexToString);
//Aqui faz o Cálculo do BCC
String fFrame_ = (cabecalho_c + cont2 + estringue_string + fim_c);
System.out.println("fFrame_:" + fFrame_);
int nBytes = fFrame_.length() / 2;
byte[] bytes = new byte [nBytes];
System.out.println("bytes:" + bytes);
int bByte = 0;
for (int i = 0; i < nBytes; ++i) {
bytes[i] = (byte) Integer.parseInt (fFrame_.substring(i*2, i*2+2), 16);
bytes[i] = (byte) (bByte^bytes[i]);
bytes[i] = (byte) ((bytes[i]<<1));
System.out.println("bytes[i]:" + bytes[i]);
bByte = bytes[i];
}
System.out.println("bByte:" + bByte);
System.out.println("fFrame_.length():" + fFrame_.length());
String bByte1 = Integer.toHexString(bByte);
System.out.println("bByte:" + bByte);
System.out.println("bByte1:" + bByte1);
//Aqui verifica se a variável bByte1 possui menos
//do que 8 caracteres e caso possua acrescenta
//0 (zeros) antes da string
while(bByte1.length()< 8){
bByte1="0" + bByte1;
System.out.println("bByte1:" + bByte1);
}
//Aqui pega a partir do sexto elemento da string
//na variável bByte1 e atribui o seu conteúdo a variável bByte2
String bByte2 = bByte1.substring(6);
System.out.println("bByte2:" + bByte2);
//Transformação de hexadecimal para caracter
//a variável bByte2 que contém valor hexadecimal
//é convertida em caracter e a variável bByte1HexToString
//recebe este caracter
String bByte1HexToString = new String("");
for(int i = 0; i < bByte2.length(); i += 2){
String bByte2Temp = bByte2.substring(i, i + 2);
bByte1HexToString += new Character((char)(Integer.valueOf(bByte2Temp,16).intValue())).toString();
frame_ = bByte1HexToString;
}
System.out.println("bByte1HexToString:" + bByte1HexToString);
String concatenaHexToString = (cabecalhoHexToString + cont_string_cHexToString + linha1_cHexToString + estringue_string_cHexToString + fim_cHexToString + bByte1HexToString);
System.out.println("concatenaHexToString:" + concatenaHexToString);
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
try {
serialPort = (SerialPort)
portId.open("SimpleWriteApp", 2000);
} catch (PortInUseException e) {}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {}
try {
serialPort.setSerialPortParams(19200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
try {
//Aqui envia a string para a porta serial
for ( int i = 0 ; i < concatenaHexToString.length() ; i++ ) {
outputStream.write( concatenaHexToString.charAt(i) );
System.out.println("concatenaHexToString:" + concatenaHexToString.charAt(i));
}
} catch (IOException e) {}
try {
Thread.sleep(2000);
}catch(Exception e){
System.out.println("Erro"+ e.getMessage());
}
}
}
}
}
class Exemplo_botao_actionAdapter implements java.awt.event.ActionListener {
Exemplo adaptee;
Exemplo_botao_actionAdapter(Exemplo adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.botao_actionPerformed(e);
}
}[/code]
Se observarem no código o que gostaria de fazer era pegar de dentro da opção selecionada no
if (selectedValue.equals("Calendario"))
return "9B";
else
return "9A";
retornado o valor 9A ou 9B dependendo da escolha para dentro do void main void na parte
//Aqui pega a string OBJETO do arquivo de propriedades
//(configuration.properties) e atribui a mesma para a string objeto
String objeto = prop.getProperty("OBJETO");
trocando o prop.getProperty(“OBJETO”);, o qual pego de um arquivo de propriedades pelo valor que é selecionado na opção.
Agradeço se alguém puder me dar uma força.
Nossa…que confusão!
Tua pergunta parece tão simples. É que bah…eu não tenho paciência pra ler tanto código!
O que tu quer fazer?
Quando clicar no botão 1, apareça na Tela “Apertou botão 1” e, quando apertar o botão 2 apareça na tela “Apertou botão 2”?
Desculpe, é que achei que ficaria melhor para vocês entenderem se tivessem o código para olhar. O que quero fazer é que quando o botão Calendário for pressionado por exemplo, me seja retornado a string 9B, só que eu preciso utilizar esta string 9B dentro do restante do programa que está dentro do void main. Acontece que não estou conseguindo fazer a chamada destes valores dentro do void main, agradeço se alguém puder me dar uma força. E mais uma vez me desculpem é que o código é meio grande mesmo, coisa de iniciante. :oops:
Não quiz parecer grosso…se pareceu…me desculpe!
Bem…tenta fazer assim:
private String texto_botao_1 = "";
.
.
.
botao1.addActionListener(this);
.
.
.
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == botao1) texto_botao_1 = "Clicou no botão 1";
}
public String apertouBotao1()
{
return texto_botao_1;
}
.
.
.
public static void main(String args[])
{
TuaClasse c = new TuaClasse();
String s = c.apertouBotao1();
}
Seria isso…
Só não entendo o que tu quer fazer. Por que tu vai querer este valor na main? Não dá para fazer tudo o que tu quer dentro do próprio construtor?
mdtorbis não fostes grosseiro não cara, ocorre que após ter enviado minha dúvida eu mesmo achei que ela ficou meio confusa. Cara obrigado pela ajuda, vou testar o que me mandastes e qualquer coisa eu posto aí para tirar outras dúvidas, falou. Abraço!
Pessoal, graças a ajuda do mdtorbis consegui fazer funcionar o programa com as opções de escolha, mas gostaria de saber como posso fazer para chamar dentro de outra opção de escolha uma das escolhas feitas anteriormente. Por exemplo:
Se tenho:
[code]public String retornaOpcao() {
Object[] possibleValues = { "Objeto", "Cor"};
Object selectedValue = JOptionPane.showInputDialog(null,
"Selecione uma das opções de edição de linha", "Janela de opções",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
if (selectedValue.equals("Objeto")){
return "C5";
}
if (selectedValue.equals("Cor")){
return "C6";
}
return null;
}[/code]
Como faço para chamar uma dessas opções dentro de outra opção tipo:
Se eu selecionar Objeto me abra outra caixa de opção, na qual eu possa selecionar os objetos, tipo:
[code]public String retornaOpcao1() {
Object[] possibleValues = { "Calendario", "Relogio"};
Object selectedValue = JOptionPane.showInputDialog(null,
"Selecione uma das opções de objeto", "Janela de opções",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
if (selectedValue.equals("Calendario")){
return "04";
}
if (selectedValue.equals("Relogio")){
return "9A";
}
return null;
}[/code]
E no caso de eu selecionar Cor, me abra outra caixa de opção, com as opções de cores para eu setar, tipo:
[code]
public String retornaOpcao1() {
Object[] possibleValues = { "Verde fraco", "Verde forte"};
Object selectedValue = JOptionPane.showInputDialog(null,
"Selecione uma das opções de objeto", "Janela de opções",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
if (selectedValue.equals("Verde fraco")){
return "9C";
}
if (selectedValue.equals("Verde forte")){
return "9D";
}
return null;
}[/code]
Agradeço se alguém puder me dar uma dica.