Já sei que vocês vão me mandar pesquisar um pouco mais, mas é que não tenho mais tempo.
Os professores querem que aprendamos java em apenas 7 semanas, e com 2 provas dificílimas.
Nem tem tempo pra tirar nossas dúvidas direito.
Estou na 5: Interfaces Gráficas com Usuário
Mas minha dúvida é o seguinte.
Segue o código com dúvidas comentadas.
Quem puder me ajudar, blz.
/** @autor: DARK BOMBER
*
** Parece bobeira mas vai me ajudar muito...
*
*/
// início de Exemplo.java
/** importando classes **/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; // interface gráfica.
import javax.swing.JButton; // classe para botão.
import javax.swing.JFrame; // classe para tela.
import javax.swing.JLabel; // classe para legenda.
import javax.swing.JPanel; // classe p/ painel.
import javax.swing.JTextArea; //
import javax.swing.JTextField; // classe para campo de texto.
import javax.swing.JRadioButton;
// faltavam estas
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.ButtonGroup;
/*************************************************************/
public class Exemplo { // classe principal
public static void main(String[] args) {
JFrame tela = new JFrame("por: Francis Rodrigues - EADCON de MEDINA"); // criando a janela.
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// cria botões com ações de fechar a janela.
JLabel labelDes = new JLabel("Digite o valor e depois selecione o serviço.");
final JTextArea minhaAreaTexto = new JTextArea(10, 20); // criando área de texto.
minhaAreaTexto.setEditable(false); /** define que o conteúdo(o texto)
* não pode ser alterado
*/
JLabel labelDescricao = new JLabel("Valor: "); // cria rótulos.
final JLabel labelValor = new JLabel("0"); // ("0" é o texto inicial).
//precisam ser declarados como final p/ permitir o acesso da classe interna
// precisam ser declarados como final p/ permitir o acesso da classe interna.
final JTextField meuCampoTexto = new JTextField(10); /** aqui é criado
* um campo de texto de uma linha. Neste campo serão digitados os valores para se
* realizer a soma.
*/
meuCampoTexto.setText("0"); /* define texto inicial do campo acima;
* como o campo vai receber valores, tem que ficar com valor "0"*/
JButton botaoCalcular = new JButton("+"); /* cria o botão que
* vai realizar a soma. Atribui o nome "somar". */
JButton botaoDiminuir = new JButton("-");
JButton botaoVezes = new JButton("x");
JButton botaoDividir = new JButton("/");
// JButton botaoOk = new JButton("OK");
/**este botão "OK" era pra no caso de deu tivesse conseguido criar o
* "JCheckBox".
*
* Eu criei sim, mas só que não consigo atribuir valores à els
*
* Alguma explicação????????
*/
JRadioButton botaoSomar = new JRadioButton("Somar"); // faltou r no final do nome
JRadioButton botaoSubtrair = new JRadioButton("Subtrair");
JRadioButton botaoMultiplicar = new JRadioButton("Multiplicar");
JRadioButton botaoDividir_1 = new JRadioButton("Dividir");
// JCheckBox basicoCheckBox = new JCheckBox("Operações Básicas"); //nem vou colocar senão vai dar muito trabalho...
// JCheckBox cientificoCheckBox = new JCheckBox("Operações Científicas"); //nem vou colocar senão vai dar muito trabalho...
// JCheckBox financeiroCheckBox = new JCheckBox("Operações Financeiras"); //nem vou colocar senão vai dar muito trabalho...
ButtonGroup grupo = new ButtonGroup();
grupo.add(botaoSomar);
grupo.add(botaoSubtrair);
grupo.add(botaoMultiplicar);
// JComboBox comboOperacao = new JComboBox(); // retirei, pois não estou conseguindo colocá-lo abaixo dos outros campos
// comboOperacao.addItem("Somar");
// comboOperacao.addItem("Multiplicar");
// comboOperacao.addItem("Subtrair");
// String operacaoSelecionada = (String)comboOperacao.getSelectedItem();
/**************** início de uma classe interna para somar ******************/
class CalcularListener implements ActionListener { // explicação abaixo:
/** início de uma classe interna
* Ela está implementada dentro do Método main da classe Exemplo.
* Ela só pode ser vista apenas dentro da classe ou método que
* foi implementada, neste caso, a interfece "ActionListener".*/
// "public void" é a implementação do método da interface".
public void actionPerformed(ActionEvent event) {
double valor = Double.parseDouble(labelValor.getText()); //explicação abaixo:
/** como "Text" só pode ser do tipo String, é preciso converter para double,
* assim foi criada uma classe "Double" para ele.*/
valor = valor + Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor); // explicação abaixo:
/** somando "valor atual" + "novo valor".
* Por isso as " " (aspas vazias", para atribuir o valor já somado
* ao último valor que digitamos e espera ser somado, clicando
* no botão "somar".
*/
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
}
}
ActionListener listener = new CalcularListener();
/** criação e associação do tratador de eventos ao botão*/
botaoCalcular.addActionListener(listener);
botaoSomar.addActionListener(listener);
/************ Fim da classe interna para soma *****************/
/**************** Classe interna para subtração ********************/
class SubtrairListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
double valor = Double.parseDouble(labelValor.getText());
valor = valor - Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
}
}
ActionListener listener1 = new SubtrairListener();
botaoSubtrair.addActionListener(listener1);
botaoDiminuir.addActionListener(listener1);
/****************** Fim da classe interna para subtração ********************/
/***************** Início da classe Multiplicar ***************************/
class MultiplicarListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
double valor = Double.parseDouble(labelValor.getText());
valor = valor * Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
}
}
ActionListener listener2 = new MultiplicarListener();
botaoMultiplicar.addActionListener(listener2);
botaoVezes.addActionListener(listener2);
if (botaoMultiplicar.isSelected() );
/******************** Fim da classe para Multiplicar ***************************/
/**************** Classe interna para Divisão ********************/
class DividirListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
double valor = Double.parseDouble(labelValor.getText());
valor = valor / Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
}
}
ActionListener listener3 = new DividirListener();
botaoDividir.addActionListener(listener3);
botaoDividir_1.addActionListener(listener3);
if (botaoSomar.isSelected() ); //não sei o que faço com isso.
//faz a soma...
else //não sei o que faço com isso.
if (botaoSubtrair.isSelected() ); //não sei o que faço com isso.
JPanel painel = new JPanel(); // criação do painel.
/** adicionando componentes ao painel **/
painel.add(botaoCalcular); // adiciona o "botaoCalcular" ao painel.
painel.add(botaoDiminuir);
painel.add(botaoVezes);
painel.add(botaoDividir);
painel.add(botaoSomar);
painel.add(botaoSubtrair);
painel.add(botaoMultiplicar);
painel.add(botaoDividir_1);
// painel.add(botaoOk);
/***** Já que não conseguir fazer com que os valores selecionados em
* "JCheckBox" fossem calculados desativei este botão.
*/
// painel.add(basicoCheckBox);
// painel.add(cientificoCheckBox);
// painel.add(financeiroCheckBox);
// painel.add(comboOperacao);
painel.add(meuCampoTexto); // adiciona "meuCampoTexto" ao painel.
painel.add(labelDescricao);
painel.add(labelValor);
painel.add(minhaAreaTexto);
// painel.add(grupo); // nao tem este add com parametro ButtonGroup
tela.setContentPane(painel); // atribuição do painel à tela.
tela.setSize(210, 350); // definindo o tamanho da tela(janela).
tela.setVisible(true); // tornando a tela(janela) visível.
}
}
//fim de Exemplo.java
OBS.: Todas as linhas testadas e sem erros.
O que não consigo fazer está como código em forma de comentário.
Foi criado no BlueJ, pode apresentar erro em outras IDEs.
Comentários...
Bem não entendi qual é realmente a sua dúvida...
O que realmente que fazer...?
qual é o problema?
// início exemplo CheckBox com botão de OK.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Exemplo68c_checkbox {
public static void main(String[] args)
{
JFrame tela = new JFrame("by: DARK BOMBER");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JCheckBox somaCheckBox = new JCheckBox ("somar");
final JCheckBox subtraeCheckBox = new JCheckBox ("subtrair");
final JCheckBox multiplicaCheckBox = new JCheckBox ("multiplicar");
final JCheckBox divideCheckBox = new JCheckBox ("Dividir");
// Aqui está o botão de OK para validar o Checkbox...
final JButton botaoOK = new JButton("OK");
class CalcularListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if (basicoCheckBox.isSelected())
System.out.println("basico OK"); // colocar alguma instrucao q deve ser executada
if (cientificoCheckBox.isSelected())
System.out.println("cientifico OK"); // colocar alguma instrucao q deve ser executada caso seja selecionado este botao
if (financeiroCheckBox.isSelected())
System.out.println("financeiro OK");; // colocar alguma instrucao q deve ser executada caso seja selecionado este botao
}
}
ActionListener listener = new CalcularListener();
botaoOK.addActionListener(listener); // para acionar o listener só a partir do botao OK
JPanel painel = new JPanel();
painel.add(basicoCheckBox);
painel.add(cientificoCheckBox);
painel.add(financeiroCheckBox);
painel.add(botaoOK);
tela.setContentPane(painel);
tela.setSize(300, 200);
tela.setVisible(true);
}
}
// fim
Aqui eu já resolvi finalmente.
Agora o problema é aqui:
Quote// início exemplo JComboBox
// início
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Exemplo_combobox {
public static void main(String[] args)
{
JFrame tela = new JFrame("by: DARK BOMBER");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea minhaAreaTexto = new JTextArea(10, 20);
minhaAreaTexto.setEditable(false);
JLabel labelDescricao = new JLabel("Valor: ");
final JLabel labelValor = new JLabel("0");
final JTextField meuCampoTexto = new JTextField(10);
meuCampoTexto.setText("0");
final JComboBox comboOperacao = new JComboBox(); /** atribuído o atributo "final" para
que a classe intrerna (a classe tratadora de eventos ) tenha acesso. **/
comboOperacao.addItem("Somar");
comboOperacao.addItem("Subtrair");
comboOperacao.addItem("Multiplicar");
comboOperacao.addItem("Dividir");
class CalcularListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
double valor = Double.parseDouble(labelValor.getText());
String opSelecionada = (String)comboOperacao.getSelectedItem();
if (opSelecionada == "Somar")
valor = valor + Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "Subtrair")
valor = valor - Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "Multiplicar")
valor = valor * Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "Dividir")
valor = valor / Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
}
}
ActionListener listener = new CalcularListener();
comboOperacao.addActionListener(listener); // acima o Listener para o cálculo.
JPanel painel = new JPanel();
painel.add(comboOperacao);
painel.add(meuCampoTexto);
painel.add(labelDescricao);
painel.add(labelValor);
painel.add(minhaAreaTexto);
tela.setContentPane(painel);
tela.setSize(320, 260);
tela.setVisible(true);
}
}
// fim
Não entendi essa parte, ele cria um botão e
adiciona vários tipos de cálculos à ele.
Quotefinal JComboBox comboOperacao = new JComboBox();[/color] /** atribuído o atributo "final" para
que a classe intrerna (a classe tratadora de eventos ) tenha acesso. **/
comboOperacao.addItem("Somar");
comboOperacao.addItem("Subtrair");
comboOperacao.addItem("Multiplicar");
comboOperacao.addItem("Dividir");
Não sei fazer isso funcionar direito.
Quoteif (opSelecionada == "Somar")
valor = valor + Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
Ele está calculando de forma errada.
(//http://i10.tinypic.com/7wgipnm.gif)
Espero que possa me ajudar.
Tenha paciência, pois é meu primeiro código, e olha, em fevereiro já vamos ter
prova prática, e como comecei agora, não vai ser nada fácil, mas vai ser divertido.
[]s.
pelo o que eu entendi do texto ele verifica o texto que tá na combo box e depois faz a opração, essa operação ele pega o valor do label
final JLabel labelValor = new JLabel("0");
e soma, multiplica, divide ou subtrai.
Agora ele não tá calculando de forma errada. No seu exemplo vc pediu para
multiplicar 10 * 0 = 0
Para mudar o valor altere a linha
final JLabel labelValor = new JLabel("0");
para
final JLabel labelValor = new JLabel("1");
ai ele vai fazer 10 * 1 = 10...
Espero ter ajudado.
mas esse aí é o valor inicial, se eu alterar pra 1 vai começar com 1.
Então imagine se eu fosse colocar o valor inicial 10, se ele fosse somar com o 1
ia dar 11.
Mas se o valor fosse 0 ia dar 10 novamente, isso era pra carregar o valor pra área do cálculo, por isso acho que não é recomendado alterá-lo.
E tem outra coisa, a aba somar não funfa, não sei porque.
Ajudou e muito mas não posso fazer isso senão vou ser reprovado.
[]s
hunm aqui funcionou perfeitamente... seu código acho que vc se confundiu um pouco...
bem fiz uma alteração no seu código testa ai.
// início exemplo JComboBox
// início
package form;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Exemplo {
public static void main(String[] args) {
JFrame tela = new JFrame("by: DARK BOMBER");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea minhaAreaTexto = new JTextArea(10, 20);
minhaAreaTexto.setEditable(false);
JLabel labelDescricao = new JLabel("Valor: ");
final JLabel labelValor = new JLabel("0");
final JTextField meuCampoTexto = new JTextField(10);
meuCampoTexto.setText("0");
final JComboBox comboOperacao = new JComboBox(); /** atribuído o atributo "final" para
* que a classe intrerna (a classe tratadora de eventos ) tenha acesso. **/
comboOperacao.addItem("");
comboOperacao.addItem("Somar");
comboOperacao.addItem("Subtrair");
comboOperacao.addItem("Multiplicar");
comboOperacao.addItem("Dividir");
class CalcularListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
double valor = Double.parseDouble(labelValor.getText());
String opSelecionada = (String)comboOperacao.getSelectedItem();
if (opSelecionada == "Somar")
valor = valor + Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "Subtrair")
valor = valor - Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "Multiplicar")
valor = valor * Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "Dividir")
valor = valor / Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
if (opSelecionada == "")
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
}
}
ActionListener listener = new CalcularListener();
comboOperacao.addActionListener(listener); // acima o Listener para o cálculo.
JPanel painel = new JPanel();
painel.add(comboOperacao);
painel.add(meuCampoTexto);
painel.add(labelDescricao);
painel.add(labelValor);
painel.add(minhaAreaTexto);
tela.setContentPane(painel);
tela.setSize(320, 260);
tela.setVisible(true);
}
}
// fim
(//http://img408.imageshack.us/img408/5036/imagemsg1.th.jpg) (//http://img408.imageshack.us/my.php?image=imagemsg1.jpg)
: 29 Novembro 2007, 13:04:01para ficar melhor ainda.. apos os if que efetuam as contas...
coloque
comboOperacao.setSelectedIndex(0);
Ele vai voltar ao primeiro item que seria "", para poder somar, subtrair, dividir e ou multiplicar.
Quote from: "Alucard"para ficar melhor ainda.. apos os if que efetuam as contas...
coloque
comboOperacao.setSelectedIndex(0);
Ele vai voltar ao primeiro item que seria "", para poder somar, subtrair, dividir e ou multiplicar.
Resolveu o problema da falta de cálculos
(é que eu ainda não havia aprendido isso na faculdade).
Não entendi o comando package form;
presente antes dos imports ( ele dá um erro de compilação e
depois some do código, salvando-o automaticamente no final).
Agora eu resolvi aqui o problema dos resultados repetidos que cada
cálculo gerava. Cada botão
Jcombo estava apresentando
um mesmo resultado em 4 linhas. (Erro gravíssimo)
if (opSelecionada == "Somar"){
valor = valor + Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");}
if (opSelecionada == "Subtrair"){
valor = valor - Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");}
Daí juntando tudo vai ficar assim:// início exemplo JComboBox
// início
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Exemplo {
public static void main(String[] args) {
JFrame tela = new JFrame("by: DARK BOMBER");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea minhaAreaTexto = new JTextArea(10, 20);
minhaAreaTexto.setEditable(false);
JLabel labelDescricao = new JLabel("Valor: ");
final JLabel labelValor = new JLabel("0");
final JTextField meuCampoTexto = new JTextField(10);
meuCampoTexto.setText("0");
final JComboBox comboOperacao = new JComboBox(); /** atribuído o atributo "final" para
* que a classe intrerna (a classe tratadora de eventos ) tenha acesso. **/
comboOperacao.addItem("");
comboOperacao.addItem("Somar");
comboOperacao.addItem("Subtrair");
comboOperacao.addItem("Multiplicar");
comboOperacao.addItem("Dividir");
class CalcularListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
double valor = Double.parseDouble(labelValor.getText());
String opSelecionada = (String)comboOperacao.getSelectedItem();
if (opSelecionada == "Somar"){
valor = valor + Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
comboOperacao.setSelectedIndex(0);}
if (opSelecionada == "Subtrair"){
valor = valor - Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
comboOperacao.setSelectedIndex(0);}
if (opSelecionada == "Multiplicar"){
valor = valor * Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
comboOperacao.setSelectedIndex(0);}
if (opSelecionada == "Dividir"){
valor = valor / Double.parseDouble(meuCampoTexto.getText());
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
comboOperacao.setSelectedIndex(0);}
if (opSelecionada == ""){
labelValor.setText("" + valor);
minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
comboOperacao.setSelectedIndex(0);}
}
}
ActionListener listener = new CalcularListener();
comboOperacao.addActionListener(listener); // acima o Listener para o cálculo.
JPanel painel = new JPanel();
painel.add(comboOperacao);
painel.add(meuCampoTexto);
painel.add(labelDescricao);
painel.add(labelValor);
painel.add(minhaAreaTexto);
tela.setContentPane(painel);
tela.setSize(320, 260);
tela.setVisible(true);
}
}
// fim
Era só colocar chaves dentro dos comandos if , pois são vários dentro do laço.
Estávamos nos esquecendo disso, meu Deus, e isso é regra! ;D
Agradecimentos ao
alucard, o cara sabe muito e ao
#phobia por ter editado o post.
Valeu aos dois.
d boa se precisar tamo ai

Cara em relação ao package no inicio do código é que onde fiz o teste eu usava um packote ai eu esqueci de mudar, foi mal.
Valew