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