Colocar um resultado de baixo do outro no Jframe

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.