Aplicação Swing - Venda de Produtos

1 resposta
boogiedune

Pessoal, gostaria de pedir a ajuda de você em um programinha que estou desenvolvendo para apresentar na faculdade. Seguinte:

Tenho duas classes, e o programa consiste em um painel de venda. No link abaixo você pode encontrar uma melhor descrição do programa.

[url]http://www.javafree.org/javabb/file/d.jbb?fileId=466[/url]

O meu código está assim até o presente momento:

( ( ( LabelFrame.java ) ) )
import java.awt.*;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.*;


public class LabelFrame extends JFrame {

	private JLabel lblUnderline;
	private JLabel lblProduto; 
	private JLabel lblQuantidade; 
	private JLabel lblValorUnitario; 

	private JTextField txtBranco;
	private JTextField txtProduto;
	private JTextField txtQuantidade;
	private JTextField txtValorUnitario;
	
	private JTextArea taListaDePedidos;
		
	private JButton btnIncluir;
	private JButton btnExcluir;
	private JButton btnFinalizarCompra;
	
	private JList lstPagamento;
	
	JList lista;
	String pagamento[] = {"A Vista", "Parcelado"};
	
	
	//construtor
	public LabelFrame(){
	super("Tela de Venda");
	setLayout(new FlowLayout());
	
	lblUnderline = new JLabel("_________________________________________________________________________________________");
	add(lblUnderline);
			
	lblProduto = new JLabel("Produto:    ", SwingConstants.LEFT); 
	//lblProduto.setToolTipText("Digite o nome do produto"); 	
	add(lblProduto); 
	
	txtProduto = new JTextField(28);
	add(txtProduto);
	
	
	
	btnIncluir = new JButton(" Incluir ");
	add(btnIncluir);
	
	
	
	lblQuantidade =  new JLabel("Quantidade: ");
	lblQuantidade.setToolTipText("Digite a quantidade");
	add(lblQuantidade);
	
	txtQuantidade = new JTextField(8);
	add(txtQuantidade);	
	
	
			
	lblValorUnitario = new JLabel();
	lblValorUnitario.setText("Valor unitário: ");
	add(lblValorUnitario);
	
	txtValorUnitario = new JTextField(11);
	add(txtValorUnitario);
	
	
	
	btnExcluir = new JButton("Excluir");
	add(btnExcluir);
	
	txtBranco = new JTextField(10);
	txtBranco.setText("            |||");

	Box box = Box.createHorizontalBox();
	//String demo = "This is a demo string to\n" + "Illustrate...";
		
	taListaDePedidos = new JTextArea( 30, 30); //altura, largura
	box.add(new JScrollPane(taListaDePedidos));

	btnIncluir.addActionListener
		(
		new ActionListener()
			{
				public void actionPerformed( ActionEvent event)
				{
					if (event.getSource()==btnIncluir)
					{
						taListaDePedidos.setText(txtProduto.getText() + txtBranco.getText() + txtQuantidade.getText()
							 + txtBranco.getText() + txtValorUnitario.getText());
						
					}	
				}
			}
		);

		box.add(new JScrollPane(taListaDePedidos));	
		add(box);

	
	Container ctnList = getContentPane();
   
	FlowLayout layout = new FlowLayout(FlowLayout.CENTER);
	ctnList.setLayout(layout);
     
	lstPagamento = new JList(pagamento);
	lstPagamento.setVisibleRowCount(1);
	lstPagamento.setSelectedIndex(2);  
	lstPagamento.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   
	ctnList.add(new JScrollPane(lstPagamento));
	
	
	
	
	} //Fim do Construtor LabelFrame
	
	public Component getListCellRendererComponent(
		JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
     	{ 
		return this;
   		}
	
} //Fim da Classe LabelFrame

E o arquivo que testa o programa:

( ( ( LabelTest.java ) ) )
import javax.swing.JFrame;

public class LabelTest {
	
	public static void main(String args[]) {
		
		LabelFrame labelFrame = new LabelFrame(); 
		labelFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		labelFrame.setVisible(true); 
		labelFrame.setResizable(false); 
		labelFrame.setBounds(200, 170, 500, 400); //configura (x, y, largura, altura)
		
	} 

}

Como as próprias regras do GUJ não permite. Gostaria de ver se podem me ajudar com algumas funções do programa, eu não sou programador por isso estou pedindo ajuda. Seguinte, como que eu posso fazer, para que quando o usuário clicar em "Incluir" o Produto com seu preço unitário e sua quantidade, seja enviado a JTextArea abaixo. Do jeito que está no código, ele ficará sobreescrevendo o próximo produto quando eu incluir.

Melhor... testem vocês mesmo e vêem o que acham.

Obrigado.
Diego

1 Resposta

A

Realmente muito simples. Basta pegar o valor antigo, quebrar a linha e adicionar o valor novo.
Veja como fica o código (modifiquei a instrução da linha 92 da classe LabelFrame) :

taListaDePedidos.setText(taListaDePedidos.getText() + "\n" + txtProduto.getText() + txtBranco.getText() + txtQuantidade.getText() + txtBranco.getText() + txtValorUnitario.getText());

Evitando que fique com a primeira linha em branco:

if (taListaDePedidos.getText().isEmpty()) taListaDePedidos.setText(txtProduto.getText() + txtBranco.getText() + txtQuantidade.getText() + txtBranco.getText() + txtValorUnitario.getText()); else taListaDePedidos.setText(taListaDePedidos.getText() + "\n" + txtProduto.getText() + txtBranco.getText() + txtQuantidade.getText() + txtBranco.getText() + txtValorUnitario.getText());

Espero ter ajudado
[]'s

Criado 23 de setembro de 2007
Ultima resposta 26 de set. de 2007
Respostas 1
Participantes 2