Обновите таблицу из JInternalFrame данными из JDialog - PullRequest
0 голосов
/ 09 января 2019

Я разрабатываю настольное Java-приложение, у меня есть JInternalFrame и JDialog, который вставляет данные в таблицу в JInternalFrame.

Как обновить таблицу, когда я нажимаю кнопку «Вставить» без закрытия и открываю JInternalFrame?

Это печать экрана:

Question

Я знаю, что это возможно, добавив addWindowListener(), но я не знаю, как это реализовать.

Это код из JInternalFrame и JDialog:

public class JIFAbastos extends JInternalFrame{
    public JIFAbastos() {
    // this.addWindowListener();

    // Some code for update the table when the JDialog is close or pressed "Insertar" button.
    }


public class JDInsAbasto extends JDialog{
    public JDInsAbasto() {
    btnAdAb.addActionListener(new ActionListener(){
    @Override
        public void actionPerformed(ActionEvent ae){
    //Set variables and insert in table
    }
}); 

1 Ответ

0 голосов
/ 10 января 2019

Вы можете добавить строку к JTable, используя addRow() метод, подобный этому:

((DefaultTableModel) table.getModel()).addRow(new String[] {"value1", "value2"});

Попробуйте приведенный ниже пример и убедитесь сами.

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;

public class TableAndDialog
{
  public static void main(String[] args)
  {
    JTable table = new JTable(new DefaultTableModel(
        new String[][] {{"R1C1", "R1C2"}, {"R2C1", "R2C2"}},
        new String[] {"Column 1", "Column 2"}));

    JFrame f = new JFrame("Frame");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);

    JTextField field1 = new JTextField(20);
    JTextField field2 = new JTextField(20);

    JButton insertButton = new JButton("Insert");
    insertButton.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        ((DefaultTableModel) table.getModel()).addRow(
            new String[] {field1.getText(), field2.getText()});
      }
    });

    JButton button = new JButton("Insert data");
    button.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        JDialog d = new JDialog(f, "Dialog");
        d.getContentPane().setLayout(new GridLayout(0, 2));
        d.getContentPane().add(new JLabel("Column 1 value"));
        d.getContentPane().add(field1);
        d.getContentPane().add(new JLabel("Column 2 value"));
        d.getContentPane().add(field2);
        d.getContentPane().add(insertButton);
        d.setBounds(400, 600, 300, 200);
        d.setVisible(true);
      }
    });

    f.getContentPane().add(button, BorderLayout.SOUTH);
    f.setBounds(300, 200, 400, 300);
    f.setVisible(true);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...