Estou fazendo um programa que digita o nome, valor e aperta o botão envio, o resultado vai pra outra tabela mostrando o nome com o resultado do preço.
O que eu quero fazer é que toda hora que apertar novamente o botão envio, o novo resultado ficar de baixo do anterior.
Exemplo que vai pra tabela:
Diego: 500
Aperto o botão de novo com novos dados:
Diego 500
Maria 600
Variáveis:
Nome do botão: envio
eqtd: pega o valor digitado
Mnome: Pega o nome digitado
Mostra: Pega o resultado
Segue o código:
private void envioActionPerformed(java.awt.event.ActionEvent evt) {
String Eqtd = eqtd.getText();
int Ceqtd = Integer.parseInt(Eqtd);
int Rpreco = 0;
final StringBuilder texto = new StringBuilder();
if(Ceqtd >= 100 && Ceqtd <=200){
Rpreco = (int) 500.00;
}
if(Ceqtd >= 201 && Ceqtd <=400){
Rpreco = (int) 600.00;
}
String Mnome = dnome.getText();
String Mostra = Integer.toString(Rpreco);
texto.append(Mnome +": " +Mostra +"\n\n");
resultado.setText(texto.toString());
}
O que faz é apenas pular linha e voltar alterando o resultado anterior.
Agradeço muito de quem me ajudar.
Procure pelo método private void adicionarNovaLinha(), na codificação a seguir:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Arrays;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class Ordenance extends JFrame {
private final JTable tabela = new JTable(new DefaultTableModel(null, new String[]{"NOME", "IDADE", "SALÁRIO"}));
private final JButton btnIncluir = new JButton("Incluir dados");
private final JTextField txtNome = new JTextField("Informe o nome"),
txtIdade = new JTextField("Informe a idade"),
txtSalario = new JTextField("Informe o salário");
private final JTextField[] listaCampoTxt = {txtNome, txtIdade, txtSalario};
public Ordenance() {
super("Titulo: Minha tabela");
config();
eventos();
}
private void config() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 400);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
JPanel painelDedados = new JPanel(new GridLayout(1, 3, 15, 15));
Arrays.stream(listaCampoTxt).forEach(campoTexto -> painelDedados.add(campoTexto));
JScrollPane painelComRolagem = new JScrollPane();
painelComRolagem.setViewportView(tabela);
add(painelDedados, BorderLayout.NORTH);
add(painelComRolagem, BorderLayout.CENTER);
add(btnIncluir, BorderLayout.SOUTH);
}
private void eventos() {
btnIncluir.addActionListener(seClicar -> adicionarNovaLinha());
Arrays.stream(listaCampoTxt).forEach(campoTexto -> campoTexto.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
campoTexto.setText("");
}
}));
}
private void adicionarNovaLinha() {
((DefaultTableModel) tabela.getModel()).addRow(new String[]{txtNome.getText(), txtIdade.getText(), txtSalario.getText()});
}
public static void main(String[] args) {
new Ordenance().setVisible(true);
}
}
Procure compreender o DefaultTableModel, depois você pode procurar implementar o sua própria tabela, sem usar o DefaultTableModel.
1 curtida
Consegui fazer usando tabela.
String Pqtd = eqtd.getText();
final StringBuilder texto = new StringBuilder();
int Ceqtd = Integer.parseInt(Pqtd);
int Rpreco = 0;
if(Ceqtd >= 100 && Ceqtd <=200){
Rpreco = (int) 500.00;
}
if(Ceqtd >= 201 && Ceqtd <=400){
Rpreco = (int) 600.00;
}
String Mostra = Integer.toString(Rpreco);
texto.append(Mostra);
epreco.setText(texto.toString());
DefaultTableModel dtmProdutos = (DefaultTableModel) jProdutos.getModel ();
Object[] dados = {dnome.getText(), epreco.getText()};
dtmProdutos.addRow(dados);
Obrigado.
1 curtida
Se você olhar bem, é o mesmo que o colega mostrou só que feito em etapas.