Swing 两个JPanel 怎么交互呢?比如Jpanel1 有个JTextField ,Jpanel2 有个Jbuton 按钮,点击按钮获取Jpanel1 中Jtexfield的值

Swing 两个JPanel 怎么交互呢?比如Jpanel1 有个JTextField ,Jpanel2 有个Jbuton 按钮,点击按钮获取Jpanel1 中Jtexfield的值

Jpanel1

package com.datadirect.ui;

import com.datadirect.dao.DataDirectDao;
import com.datadirect.dao.EnumEditType;
import com.datadirect.entity.DataDirectData;
import com.datadirect.utils.*;

import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @author : sky
 * @ClassName : DataDirectTopPanel
 * @date : Created in 2022-05-12 10:35
 * @description:
 */
public class DataDirectTopPanel extends JPanel implements ActionListener {
    private static final long serialVersionUID = 1L;
    private JPanel BtnPanelTop;
    private static BasicMyButton SaveBtn;
    private static BasicMyButton InsertBtn;
    private static BasicMyButton EditBtn;
    private static BasicMyButton RefreshBtn;
    private JLabel state_lb;
    private MyLabel lb_directName;
    private MyLabel lb_directID;
    private MyLabel lb_contact;
    private MyLabel lb_qq;
    private MyLabel lb_memo;
    private MyLabel lb_directVendor;
    private JTextField directNameTextField;
    private JTextField vendorTextField;
    private JTextField contactTextField;
    private JTextField qqTextField;
    private JTextField memoTextField;
    public static  JTextField directIDTextField;
    private int editFlag = 0; // 标志:0 初始 1 新增、2 编辑
    int row = 0;// 返回数据库受影响的行数


    public DataDirectTopPanel() {
        this.setLayout(new BorderLayout());
        Box hBox = Box.createVerticalBox();
        hBox.add(getUpPanel());
        hBox.add(Box.createVerticalStrut(20));
        hBox.add(getDownPanel());
        this.add(hBox, BorderLayout.CENTER);
    }

    private JPanel getUpPanel() {
        BtnPanelTop = new JPanel();
        BtnPanelTop.setLayout(new FlowLayout(FlowLayout.LEFT, UIControl.MAIN_H_GAP, 15));
        BtnPanelTop.setBorder(BorderFactory.createEtchedBorder());
        BtnPanelTop.setBorder(BorderFactory.createTitledBorder("操作"));
        state_lb = new JLabel("  ");
        Font font = new Font("宋体", Font.ITALIC, 20);
        state_lb.setFont(font);
        state_lb.setForeground(Color.red);
        EditBtn = new BasicMyButton("编辑", UIControl.BTN_EDIT_PATH);
        InsertBtn = new BasicMyButton("新增", UIControl.BTN_ADD_PATH);
        SaveBtn = new BasicMyButton("保存", UIControl.BTN_SAVE_PATH);
        RefreshBtn = new BasicMyButton("刷新", UIControl.BTN_REFRESH_PATH);
        InsertBtn.addActionListener(this);
        SaveBtn.addActionListener(this);
        EditBtn.addActionListener(this);
        RefreshBtn.addActionListener(this);
        BtnPanelTop.add(state_lb);
        BtnPanelTop.add(InsertBtn);
        BtnPanelTop.add(SaveBtn);
        BtnPanelTop.add(EditBtn);
        BtnPanelTop.add(RefreshBtn);
        return BtnPanelTop;
    }

    private JPanel getDownPanel() {
        JPanel MidPanel = new JPanel();
        MidPanel.setLayout(new BorderLayout());
        MidPanel.setPreferredSize(new Dimension(970, 120));
        MidPanel.setBorder(new TitledBorder(new EtchedBorder(), "直连信息"));
        Box heightBox = Box.createVerticalBox();


        Font font = new Font("宋体", Font.PLAIN, 16);
        // ---- (水平box) ----
        Box widFirstBox = Box.createHorizontalBox();
        widFirstBox.setFont(font);
        lb_directID = new MyLabel("ID ", null, 0);
        directIDTextField = new JTextField();
        directIDTextField.setBounds(10, 112, 87, 36);
        lb_directName = new MyLabel("直连名称", null, 1);
        directNameTextField = new JTextField();
        directNameTextField.setBounds(10, 112, 87, 36);
        lb_directVendor = new MyLabel("生产厂家", null, 0);
        vendorTextField = new JTextField();
        vendorTextField.setBounds(10, 112, 87, 36);
        widFirstBox.add(lb_directID);
        widFirstBox.add(Box.createHorizontalStrut(5));
        widFirstBox.add(directIDTextField);
        widFirstBox.add(Box.createHorizontalStrut(5));
        widFirstBox.add(lb_directName);
        widFirstBox.add(Box.createHorizontalStrut(5));
        widFirstBox.add(directNameTextField);
        widFirstBox.add(Box.createHorizontalStrut(5));
        widFirstBox.add(lb_directVendor);
        widFirstBox.add(Box.createHorizontalStrut(5));
        widFirstBox.add(vendorTextField);
        // ---- (水平box) ----
        Box widSecondBox = Box.createHorizontalBox();
        lb_contact = new MyLabel("联系人", null, 0);
        contactTextField = new JTextField();
        lb_qq = new MyLabel("QQ  ", null, 0);
        qqTextField = new JTextField();
        qqTextField.setBounds(10, 112, 87, 16);
        lb_memo = new MyLabel("备注  ", null, 0);
        memoTextField = new JTextField();
        memoTextField.setBounds(2, 2, 2, 16);
        JLabel jLabel = new JLabel("状态");
        jLabel.setFont(font);
        JTextField jLabel1 = new JTextField("xxxx");
        jLabel1.setFont(font);

        widSecondBox.add(lb_contact);
        widSecondBox.add(Box.createHorizontalStrut(5));
        widSecondBox.add(contactTextField);
        widSecondBox.add(Box.createHorizontalStrut(5));
        widSecondBox.add(lb_qq);
        widSecondBox.add(Box.createHorizontalStrut(5));
        widSecondBox.add(qqTextField);
        widSecondBox.add(Box.createHorizontalStrut(5));
        widSecondBox.add(lb_memo);
        widSecondBox.add(Box.createHorizontalStrut(5));
        widSecondBox.add(memoTextField);
        widSecondBox.add(jLabel);
        widSecondBox.add(jLabel1);


        heightBox.add(widFirstBox);
        heightBox.add(Box.createVerticalStrut(20));
        heightBox.add(widSecondBox);
        MidPanel.add(heightBox);
        // ---- 设置控件字体 ----
        directNameTextField.setFont(font);
        vendorTextField.setFont(font);
        contactTextField.setFont(font);
        qqTextField.setFont(font);
        memoTextField.setFont(font);
        directIDTextField.setFont(font);

        // ---- 设置控件不可编辑 ----
        getBtnEditFlag(false);
//        EditBtn.setEnabled(false);

        return MidPanel;
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        String direct_names = directNameTextField.getText();
        if (e.getSource() == InsertBtn) {
            if (editFlag == 1 && "".equals(direct_names)) {
                JOptionPane.showMessageDialog(this, "存在未保存数据,不允许新增,请先保存数据,同时直连名称不能为空!");
            } else if (editFlag == 2) {
                JOptionPane.showMessageDialog(this, "存在未保存数据,不允许新增,请先保存数据!");
            } else {
                getBtnEditFlag(true);
                editFlag = 1; // editFlag == 1 新增
                state_lb.setText(String.valueOf(EnumEditType.EDIT_ADD_TYPE));

            }
        }
        if (e.getSource() == SaveBtn) {
            String direct_name = directNameTextField.getText();
            String direct_vendorName = vendorTextField.getText();
            String direct_contactName = contactTextField.getText();
            String direct_qq = qqTextField.getText();
            String direct_memo = memoTextField.getText();
            String directIDString = directIDTextField.getText();
            if (editFlag == 0) {
                return;
            }
            if ("".equals(direct_name)) {
                JOptionPane.showMessageDialog(this, "直连名称不允许为空,请填写直连名称!");
                return;
            }
            if ("".equals(directIDString)) {
                int directIDs = new SQLiteUtils().findSQLiteSequence("basic_dataDirect") + 1;
                directIDTextField.setText(String.valueOf(directIDs));
            }
            int directID = Integer.valueOf(directIDTextField.getText());
            String direct_create = CommonUtils.getCurrentTimeShowHMS("yyyy-mm-dd hh:mm:s");
            DataDirectData directData = new DataDirectData(directID, direct_create, direct_name, direct_memo, direct_qq, direct_contactName, 1, direct_vendorName);
            DataDirectDao dataDirectDao = new DataDirectDao();
            if (editFlag == 1) { // editFlag == 1 新增
                row = dataDirectDao.SaveDirectData(directData);
            } else if (editFlag == 2) { // editFlag == 2 编辑
                row = dataDirectDao.UpdateDirectData(directData);
            }
            if (row == 1) {
                JOptionPane.showMessageDialog(this, "保存成功");
                getBtnEditFlag(false);
//                    EditBtn.setEnabled(true);
                editFlag = 0; //初始
            } else {
                JOptionPane.showMessageDialog(this, "保存失败");
            }
            state_lb.setText("");

        }
        if (e.getSource() == EditBtn) {
            if ("".equals(direct_names)) {
                JOptionPane.showMessageDialog(this, "无数据,请点击新增,添加数据!");
            } else {
                getBtnEditFlag(true);
                state_lb.setText(String.valueOf(EnumEditType.EDIT_EDIT_TYPE));
                editFlag = 2; //编辑
            }
        }
        if (e.getSource() == RefreshBtn) {
            getBtnEditFlag(false);
            editFlag = 0;
            directNameTextField.setText("");
            vendorTextField.setText("");
            contactTextField.setText("");
            qqTextField.setText("");
            memoTextField.setText("");
            directIDTextField.setText("");
            state_lb.setText("");

        }

    }

    /**
     * 按钮是否可编辑(1 可编辑)
     *
     * @param flag
     */
    public void getBtnEditFlag(Boolean flag) {
        if (flag == true) {
            directNameTextField.setEnabled(true);
            vendorTextField.setEnabled(true);
            contactTextField.setEnabled(true);
            qqTextField.setEnabled(true);
            memoTextField.setEnabled(true);
            directIDTextField.setEnabled(false);
        } else {
            directNameTextField.setEnabled(false);
            vendorTextField.setEnabled(false);
            contactTextField.setEnabled(false);
            qqTextField.setEnabled(false);
            memoTextField.setEnabled(false);
            directIDTextField.setEnabled(false);
        }

    }
    public String getDirectID() {
        return directIDTextField.getText();
    }
}


jpanel2


```java
package com.datadirect.ui;

import com.datadirect.utils.BasicMyButton;
import com.datadirect.utils.UIControl;

import javax.swing.*;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @author : sky
 * @ClassName : DataDirectSubPanel
 * @date : Created in 2022-05-12 10:54
 * @description:
 */
public class DataDirectSubPanel extends JPanel implements ActionListener {
    private static final long serialVersionUID = 1L;
    private JPanel BtnPanelTop;
    private static BasicMyButton subSaveBtn;
    private static BasicMyButton subInsertBtn;
    private static BasicMyButton subEditBtn;
    private static BasicMyButton subRefreshBtn;
    private static JLabel subState_lb;
    private DefaultTableModel tableModel;
    private JTable table;

    public DataDirectSubPanel() {
        this.setLayout(new BorderLayout());
//        this.setPreferredSize(new Dimension(970, 200));
        Box hBox = Box.createVerticalBox();
        hBox.add(getUpPanel());
        hBox.add(Box.createVerticalStrut(20));
        hBox.add(getTablePanel());
        this.add(hBox, BorderLayout.CENTER);

    }


    private JPanel getUpPanel() {
        BtnPanelTop = new JPanel();
        BtnPanelTop.setLayout(new FlowLayout(FlowLayout.LEFT, UIControl.MAIN_H_GAP, 15));
        BtnPanelTop.setBorder(BorderFactory.createEtchedBorder());
        BtnPanelTop.setBorder(BorderFactory.createTitledBorder("操作"));
        Font font = new Font("宋体", Font.ITALIC, 20);
        subState_lb = new JLabel("  ");
        ;
        subState_lb.setFont(font);
        subState_lb.setForeground(Color.red);
        subInsertBtn = new BasicMyButton("新增", UIControl.BTN_ADD_PATH);
        subSaveBtn = new BasicMyButton("保存", UIControl.BTN_SAVE_PATH);
        subEditBtn = new BasicMyButton("编辑", UIControl.BTN_EDIT_PATH);
        subRefreshBtn = new BasicMyButton("刷新", UIControl.BTN_REFRESH_PATH);
        subInsertBtn.addActionListener(this);
        subSaveBtn.addActionListener(this);
        subEditBtn.addActionListener(this);
        subRefreshBtn.addActionListener(this);
        BtnPanelTop.add(subState_lb);
        BtnPanelTop.add(subInsertBtn);
        BtnPanelTop.add(subSaveBtn);
        BtnPanelTop.add(subEditBtn);
        BtnPanelTop.add(subRefreshBtn);
        return BtnPanelTop;
    }

    private JPanel getTablePanel()  {
        JPanel tablePanel = new JPanel();
        tablePanel.setLayout(new BorderLayout());
        JScrollPane scrollPane = new JScrollPane();
        String[] columnNames = {"行号", "ID", "subID", "数据来源", "视图", "商品编码", "初始化标记","状态","editFlag"};
        tableModel = new DefaultTableModel(null, columnNames);
        table = new JTable(tableModel);
        table = new JTable(tableModel) {
            public boolean isCellEditable(int row, int column) {
                return false;

            }
        };

        //设置表格显示的宽度。
        DefaultTableColumnModel dcm = (DefaultTableColumnModel) table.getColumnModel();
        dcm.getColumn(0).setPreferredWidth(10);
        dcm.getColumn(1).setPreferredWidth(10);
        dcm.getColumn(2).setPreferredWidth(10);
        scrollPane.setViewportView(table);
        RowSorter<TableModel> rowSorter = new TableRowSorter<TableModel>(tableModel);
        table.setRowSorter(rowSorter);
        tablePanel.add(scrollPane);
        return tablePanel;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==subInsertBtn){
            System.out.println("新增");
            DataDirectTopPanel a= new DataDirectTopPanel();
           String aa= a.directIDTextField.getText();
            System.out.println(aa);
//           String a =new  DataDirectTopPanel().getDirectID();
//            System.out.println(a);
        }

    }
}


```