简体   繁体   English

使用JDialog中的数据更新JInternalFrame中的表

[英]Update a table from a JInternalFrame with a data from a JDialog

I'm developing a Java desktop application and I have a JInternalFrame, and a JDialog that inserts data in a table in the JInternalFrame. 我正在开发Java桌面应用程序,并且有一个JInternalFrame和一个将JInternalFrame中的数据插入表中的JDialog。

How I update the table when I press the "Insertar" button without close and open the JInternalFrame? 当我按下“ Insertar”按钮而不关闭并打开JInternalFrame时,如何更新表?

This is the Print of the screen: 这是屏幕的打印:

题

I know that it is possible by adding an addWindowListener() but I don't know how implement this. 我知道可以通过添加addWindowListener()但是我不知道如何实现。

This is some code from JInternalFrame and JDialog: 这是来自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
    }
}); 

You can add a row to a JTable using addRow() method like this: 您可以使用addRow()方法向JTable添加一行,如下所示:

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

Try below example and see it yourself. 尝试下面的示例,然后自己查看。

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);
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM