package plm.grandright.client.utils; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListModel; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import org.dom4j.Document; import plm.corba.btm.BtmItem; import plm.corba.checkRight.CheckRightService; import plm.corba.checkRight.CheckRightServiceHelper; import plm.corba.grandRight.GrandRightService; import plm.corba.grandRight.GrandRightServiceHelper; import plm.corba.grandRight.GrandValue; import com.vci.corba.common.VCIError; import plm.corba.qt.QTD; import plm.corba.qt.QTWrapper; import plm.grandright.client.model.BooleanTableModel; import plm.grandright.client.view.AbstractUIFunclet; import plm.grandright.client.view.OrdinaryOpPanel; import plm.grandright.client.view.RelationAndLifeCycleOpPanel; import plm.grandright.client.vo.OpItem; import plm.grandright.client.vo.SelectedSubjectItem; import plm.oq.objectQuery.client.ui.ConditionPanel; import plm.oq.objectQuery.common.Parser; import plm.oq.objectQuery.common.QueryTemplate; import plm.oq.objectQuery.common.Tool; import plm.vo.omd.btm.wrapper.BtmItemWrapper; import com.vci.base.common.corbautil.NameServiceUtility; import com.vci.util.Log; public class RightManagerHelper { private static GrandRightService grandRightService = null; private static CheckRightService checkRightService = null; public static CheckRightService getCheckRightService() throws VCIError { if (checkRightService != null) { return checkRightService; } try { NameServiceUtility nsu = new NameServiceUtility(false); nsu.InitORBEnv(); nsu.InitORB(); nsu.InitNameContext(); System.setProperty("user.timezone", "GMT+8"); return checkRightService = CheckRightServiceHelper.narrow(nsu .getObjectByName("checkRightService")); } catch (Exception e) { Log.error(e.getMessage(), e); throw new VCIError("1", new String[] { e.getMessage() }); } } public static GrandRightService getGrandRightServicer() throws VCIError { if (grandRightService != null) { return grandRightService; } try { NameServiceUtility nsu = new NameServiceUtility(false); nsu.InitORBEnv(); nsu.InitORB(); nsu.InitNameContext(); System.setProperty("user.timezone", "GMT+8"); return grandRightService = GrandRightServiceHelper.narrow(nsu .getObjectByName("grandRightService")); } catch (Exception e) { Log.error(e.getMessage(), e); throw new VCIError("1", new String[] { e.getMessage() }); } } public static BtmItem getResourceType(AbstractUIFunclet funclet) { TreeSelectionModel model = (TreeSelectionModel) funclet .getResourceTree().getSelectionModel(); TreePath path = model.getSelectionPath(); if (null == path) { return null; } DefaultMutableTreeNode node = (DefaultMutableTreeNode) path .getLastPathComponent(); if (!(node.getUserObject() instanceof BtmItemWrapper)) { return null; } // ÀàÐÍÐÅÏ¢ BtmItemWrapper btmWrap = (BtmItemWrapper) node.getUserObject(); if (null == btmWrap || btmWrap.btmItem == null) { return null; } return btmWrap.btmItem; } public static GrandValue[] getRightDatas(String typeName) { GrandValue[] dataSets = null; try { dataSets = getGrandRightServicer().query(typeName); } catch (Throwable e) { JOptionPane.showMessageDialog( com.vci.rmip.logon.client.LogonApplication.frame, ((VCIError) e).error_message[0], "´íÎóÌáʾ", JOptionPane.ERROR_MESSAGE); return dataSets; } return dataSets; } public static void setRuleListDatas(AbstractUIFunclet funclet, GrandValue[] values) { BooleanTableModel ruleModel = (BooleanTableModel) funclet .getRightMainPanel().getRuleTable().getModel(); // Ë¢ÐÂÒ³Ãæ»º´æ funclet.getRightMainPanel().getRuleTable().removeAll(); // ruleModel.RemoveAllConditionValue(); setRuleTableHeader(funclet, values); setColunmData(funclet, values); funclet.getRightMainPanel().getRuleTable().setModel(ruleModel); } private static void setColunmData(AbstractUIFunclet funclet, GrandValue[] values) { BooleanTableModel ruleModel = (BooleanTableModel) funclet .getRightMainPanel().getRuleTable().getModel(); // ÒÀ¾Ý¹æÔòÃû³Æ£¬¹æÔò·ÖÀà Map> splitRuleMap = splitRuleByName(values); // ÒÀ¾Ý¹æÔòÃû³Æ int row = 0; // ÉèÖùæÔò¼Ç¼ÐÐÊý ruleModel.setRowCount(splitRuleMap.size()); for (Iterator>> iter = splitRuleMap .entrySet().iterator(); iter.hasNext();) { Entry> entry = iter.next(); List rules = entry.getValue(); // Ôö¼ÓÒ³Ãæ»º´æ ruleModel.setConditionValue(row, rules); for (int j = 0; j < rules.size(); j++) { // ¹æÔòÃûºÍÀàÐÍ ruleModel.setValueAt(rules.get(j).ruleName, row, 0); if (rules.get(j).ruleType.equals(IRightConstant.RULETYPE__HAS)) { ruleModel.setValueAt("ÔÊÐí¹æÔò", row, 1); } else if (rules.get(j).ruleType .equals(IRightConstant.RULETYPE__NOTHAS)) { ruleModel.setValueAt("¾Ü¾ø¹æÔò", row, 1); } else if (rules.get(j).ruleType .equals(IRightConstant.RULETYPE_ALL_HAS)) { ruleModel.setValueAt("È«²¿ÓÐȨ", row, 1); } else { ruleModel.setValueAt("È«²¿ÎÞȨ", row, 1); } // Ö¸¶¨µÄ²Ù×÷¸³Öµ TableColumnModel columnModel = funclet.getRightMainPanel() .getRuleTable().getColumnModel(); int start = rules.get(j).identifier.lastIndexOf("_") + 1; String op = rules.get(j).identifier.substring(start, rules.get(j).identifier.length()); int columnIndex = columnModel.getColumnIndex(op); ruleModel.setValueAt( rules.get(j).isGrand == '1' ? true : false, row, columnIndex); } ++row; } } private static Map> splitRuleByName( GrandValue[] values) { Map> splitRuleMap = new HashMap>(); for (int i = 0; i < values.length; i++) { if (splitRuleMap.get(values[i].ruleName) == null) { List ruleOfOneName = new ArrayList(); ruleOfOneName.add(values[i]); splitRuleMap.put(values[i].ruleName, ruleOfOneName); } else { splitRuleMap.get(values[i].ruleName).add(values[i]); } } return splitRuleMap; } private static void setRuleTableHeader(AbstractUIFunclet funclet, GrandValue[] values) { BooleanTableModel ruleModel = (BooleanTableModel) funclet .getRightMainPanel().getRuleTable().getModel(); // ²Ù×÷ÐÅÏ¢ List ops = new ArrayList(); for (int i = 0; i < values.length; i++) { int start = values[i].identifier.lastIndexOf("_") + 1; String op = values[i].identifier.substring(start, values[i].identifier.length()); if (!ops.contains(op)) { ops.add(op); } } // ²Ù×÷ÐÅÏ¢ String[] operations = ops.toArray(new String[ops.size()]); // ÉèÖÃTableÁÐÍ·ÐÅÏ¢ List tableHeader = new ArrayList(); tableHeader.add("¹æÔòÃû³Æ"); tableHeader.add("¹æÔòÀàÐÍ"); for (int m = 0; m < operations.length; m++) { tableHeader.add(operations[m]); } // ruleModel.setColumnCount(tableHeader.size()); ruleModel.setColumnIdentifiers(tableHeader .toArray(new String[tableHeader.size()])); // ÉèÖÃÁпí // JTable table = funclet.getRightMainPanel().getRuleTable(); // TableColumnModel columnModel = table.getColumnModel(); // double maxWidth = 0; // for (int i = 0; i < columnModel.getColumnCount(); i++) { // TableColumn column = columnModel.getColumn(i); // TableCellRenderer cellRenderer = column.getHeaderRenderer(); // if (cellRenderer == null) // cellRenderer = table.getDefaultRenderer(columnModel // .getColumn(i).getClass()); // Object headerValue = column.getHeaderValue(); // Component columnComp = cellRenderer.getTableCellRendererComponent( // (JTable) table, headerValue, false, false, 0, i); // // maxWidth = Math.max(maxWidth, columnComp.getPreferredSize() // .getWidth()); // } // JTableHeader jtableHeader = table.getTableHeader(); // // Dimension size = jtableHeader.getPreferredSize(); // size.width = (int) maxWidth; // jtableHeader.setPreferredSize(size); // int i =columnModel.getTotalColumnWidth(); setPreferSizeColumnWidth(funclet); } public static void setPreferSizeColumnWidth(AbstractUIFunclet funclet) { JTable table = funclet.getRightMainPanel().getRuleTable(); JTableHeader jtableHeader = table.getTableHeader(); TableColumnModel columnModel = table.getColumnModel(); // double maxWidth = 0; for (int i = 0; i < columnModel.getColumnCount(); i++) { TableColumn column = columnModel.getColumn(i); int col = jtableHeader.getColumnModel().getColumnIndex( column.getIdentifier()); int width = (int) jtableHeader .getDefaultRenderer() .getTableCellRendererComponent(table, column.getIdentifier(), false, false, -1, col) .getPreferredSize().getWidth(); for (int row = 0; row < table.getRowCount(); row++) { int preferSize = (int) table .getCellRenderer(row, col) .getTableCellRendererComponent(table, table.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth(); width = Math.max(width, preferSize); } jtableHeader.setResizingColumn(column); column.setWidth(width + table.getIntercellSpacing().width); } } public static void setRuleConditionDatas(AbstractUIFunclet funclet, int selectedRow, GrandValue value, String typeName) { if (value == null) { return; } // ÉèÖùæÔòµÄÀàÐÍ(»á´¥·¢Ê¼þ) funclet.getRightMainPanel().setRuleType(value.ruleType); if (value.ruleType.equals(IRightConstant.RULETYPE__NOTHAS) || value.ruleType.equals(IRightConstant.RULETYPE__HAS)) { ConditionPanel conditonPanel = (ConditionPanel) funclet .getRightMainPanel().getRightRulePanel(); if ((conditonPanel instanceof ConditionPanel)) { if ((conditonPanel.getRadioBtm().isSelected() && isBtm(funclet, value)) || conditonPanel.getRadioLinkType().isSelected() && !isBtm(funclet, value)) { // ÖØÐ»æÖƱí´ïÊ½Ãæ°å ((ConditionPanel) conditonPanel).setQTUI(getQtWraper(value, typeName, conditonPanel)); // ˢнçÃæ ((ConditionPanel) conditonPanel).updateUI(); } addRadioListener(funclet, selectedRow, typeName, conditonPanel.getRadioBtm()); addRadioListener(funclet, selectedRow, typeName, conditonPanel.getRadioLinkType()); } } // ÉèÖùæÔòµÄÃû³Æ funclet.getRightMainPanel().getRuleNameTextField() .setText(value.ruleName); } private static boolean isBtm(AbstractUIFunclet funclet, GrandValue value) { ConditionPanel conditonPanel = (ConditionPanel) funclet .getRightMainPanel().getRightRulePanel(); int flag = conditonPanel.getRadioFlag(); if ((flag == 0 && value != null && value.ruleText != null && !value.ruleText .equals("")) || (flag == 1 && value != null && value.seniorRuleText != null && !value.seniorRuleText .equals(""))) { return true; } return false; } private static void addRadioListener(final AbstractUIFunclet funclet, final int selectedRow, final String typeName, JRadioButton radioBtn) { // ÉèÖÃradioµÄ¼àÌýʼþ(±£Áô×î³õµÄ¼àÌý) ItemListener[] ls = radioBtn.getItemListeners(); List oldLs = new ArrayList(); ItemListener old = ls[0]; for (int i = 0; i < ls.length; i++) { oldLs.add(ls[i]); } for (int j = 0; j < oldLs.size(); j++) { radioBtn.removeItemListener(oldLs.get(j)); } radioBtn.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { try { BooleanTableModel ruleModel = (BooleanTableModel) funclet .getRightMainPanel().getRuleTable().getModel(); GrandValue value = ((List) ruleModel .getConditionValueAt(selectedRow)).get(0); BtmItem btm = RightManagerHelper.getResourceType(funclet); if (btm == null || value == null) { return; } // ÖØÐ»æÖƱí´ïÊ½Ãæ°å ConditionPanel conditonPanel = (ConditionPanel) funclet .getRightMainPanel().getRightRulePanel(); if ((conditonPanel.getRadioBtm().isSelected() && isBtm( funclet, value)) || conditonPanel.getRadioLinkType().isSelected() && !isBtm(funclet, value)) { // ˢйæÔòÃæ°åÊý¾Ý conditonPanel.setQTUI(getQtWraper(value, typeName, conditonPanel)); // ˢнçÃæ conditonPanel.updateUI(); } } catch (Exception ex) { ex.printStackTrace(); } } }); radioBtn.addItemListener(old); } private static QTWrapper getQtWraper(GrandValue value, String typeName, ConditionPanel conditonPanel) { QTWrapper qtWrapper = new QTWrapper(); qtWrapper.btmName = typeName; qtWrapper.qtName = value.ruleName; // ÒµÎñÀàÐÍ if (!conditonPanel.isLinkTypeSelected()) { qtWrapper.qtText = value.ruleText; qtWrapper.qtUIText = value.seniorRuleText; if (value.seniorRuleText == null || value.seniorRuleText.equals("")) qtWrapper.levelFlag = 0; else qtWrapper.levelFlag = 1; } else { // Á´½ÓÀàÐÍ qtWrapper.qtText = value.lruleText; qtWrapper.qtUIText = value.lseniorRuleText; if (value.lseniorRuleText == null || value.lseniorRuleText.equals("")) qtWrapper.levelFlag = 0; else qtWrapper.levelFlag = 1; } return qtWrapper; } public static void setSubjectDatas(AbstractUIFunclet funclet, GrandValue value) { JList selectedSubjects = funclet.getRightMainPanel() .getSelectedSubjectComponent(); Object[] users = value.users.split(","); Object[] roles = value.roles.split(","); Object[] userGroups = value.userGroups.split(","); ListModel selectListModel = (ListModel) selectedSubjects.getModel(); // ³õʼ»¯Êý¾ÝÄ£ÐÍ£¬Çå¿ÕÊý¾Ý selectListModel = new DefaultListModel(); ((DefaultListModel) selectListModel).setSize(users.length + roles.length + userGroups.length); for (int i = 0; i < users.length; i++) { if (users[i] != null && !users[i].equals("")) { SelectedSubjectItem item = new SelectedSubjectItem(); item.setCode((String) (users[i])); item.setName((String) (users[i])); item.setType(IRightConstant.User); ((DefaultListModel) selectListModel).setElementAt(item, i); } } for (int i = users.length; i < users.length + roles.length; i++) { if (roles[i - users.length] != null && !roles[i - users.length].equals("")) { SelectedSubjectItem item = new SelectedSubjectItem(); item.setCode((String) roles[i - users.length]); item.setName((String) roles[i - users.length]); item.setType(IRightConstant.Role); ((DefaultListModel) selectListModel).setElementAt(item, i); } } for (int i = users.length + roles.length; i < users.length + roles.length + userGroups.length; i++) { if (userGroups[i - users.length - roles.length] != null && !userGroups[i - users.length - roles.length].equals("")) { SelectedSubjectItem item = new SelectedSubjectItem(); item.setCode((String) userGroups[i - users.length - roles.length]); item.setName((String) userGroups[i - users.length - roles.length]); item.setType(IRightConstant.UserGroup); ((DefaultListModel) selectListModel).setElementAt(item, i); } } selectedSubjects.setModel(selectListModel); int selected[] = new int[users.length + roles.length + userGroups.length]; for (int i = 0; i < users.length; i++) { selected[i] = i; } for (int i = users.length; i < users.length + roles.length; i++) { selected[i] = i; } for (int i = users.length + roles.length; i < users.length + roles.length + userGroups.length; i++) { selected[i] = i; } selectedSubjects.setSelectedIndices(selected); selectedSubjects.updateUI(); } public static List fillOperationsInfo( AbstractUIFunclet funclet, String typeName) { List values = new ArrayList(); // Ò»°ã²Ù×÷ÐÅÏ¢ OpItem[] ops = ((OrdinaryOpPanel) funclet.getRightMainPanel() .getOrdinaryOpPanel()).getOpObject(); // ¹ØÏµºÍԾǨ OpItem[] rlops = ((RelationAndLifeCycleOpPanel) funclet .getRightMainPanel().getRelationAndLifeCycleOpPanel()) .getOpObject(); for (OpItem op : ops) { GrandValue value = new GrandValue(); value.identifier = typeName + "_" + op.getName(); value.ID = ""; value.isGrand = (((Boolean) op.getValue()) == false ? '0' : '1'); values.add(value); } // ¹ØÏµºÍԾǨ for (OpItem op : rlops) { GrandValue value = new GrandValue(); value.identifier = typeName + "_" + op.getName(); value.ID = ""; value.isGrand = (((Boolean) op.getValue()) == false ? '0' : '1'); values.add(value); } return values; } public static boolean fillSubjectInfo(AbstractUIFunclet funclet, List values) { JList selectedSubjects = funclet.getRightMainPanel() .getSelectedSubjectComponent(); Object[] subjects = selectedSubjects.getSelectedValues(); if (subjects == null || subjects.length == 0) { JOptionPane.showMessageDialog( com.vci.rmip.logon.client.LogonApplication.frame, "ÇëÑ¡ÔñÊÚȨÖ÷ÌåÐÅÏ¢", "Ìáʾ", JOptionPane.INFORMATION_MESSAGE); return false; } // user StringBuffer user = new StringBuffer(""); // role StringBuffer role = new StringBuffer(""); // roleGroup StringBuffer userGroup = new StringBuffer(""); for (int i = 0; i < subjects.length; i++) { SelectedSubjectItem vec = (SelectedSubjectItem) subjects[i]; if (vec == null) { continue; } if (vec.getType().equals(IRightConstant.User)) { user.append(vec.getCode()).append(","); } else if (vec.getType().equals(IRightConstant.Role)) { role.append(vec.getCode()).append(","); } else { userGroup.append(vec.getCode()).append(","); } } for (int i = 0; i < values.size(); i++) { values.get(i).roles = role.length() == 0 ? "" : role.toString(); values.get(i).users = user.length() == 0 ? "" : user.toString(); values.get(i).userGroups = userGroup.length() == 0 ? "" : userGroup.toString(); } return true; } public static boolean fillObjectInfo(AbstractUIFunclet funclet, List values) { JPanel conditionPanel = funclet.getRightMainPanel().getRightRulePanel(); QueryTemplate qt = null; if ((conditionPanel instanceof ConditionPanel)) { ConditionPanel conditionPane = ((ConditionPanel) conditionPanel); qt = ((ConditionPanel) conditionPanel).getQT(); String checkInfo = Tool.checkQT(qt); if (!checkInfo.equals("OK")) { return false; } // »ñÈ¡¹æÔòÃû³Æ if (funclet.getRightMainPanel().getRuleName() == null || funclet.getRightMainPanel().getRuleName().equals("")) { JOptionPane.showMessageDialog( com.vci.rmip.logon.client.LogonApplication.frame, "ÇëÉèÖùæÔòÃû³Æ", "Ìáʾ", JOptionPane.INFORMATION_MESSAGE); return false; } qt = conditionPane.getQT(); qt.setId(funclet.getRightMainPanel().getRuleName()); qt.setLinkType(""); for (int i = 0; i < values.size(); i++) { values.get(i).ruleName = funclet.getRightMainPanel() .getRuleName(); values.get(i).ruleType = funclet.getRightMainPanel() .getRuleType(); // ÒµÎñÀàÐÍ if (!((ConditionPanel) conditionPanel).isLinkTypeSelected()) { Document doc = conditionPane.getSeniorTreeDoc(); if (doc == null) { values.get(i).seniorRuleText = ""; } else { values.get(i).seniorRuleText = doc.asXML(); } values.get(i).ruleText = Tool.qtTOXMl(qt).asXML(); Parser parser = new Parser(qt); parser.setAddGrandRightFlag(false); String sql = parser.parseToSql(); values.get(i).expToSQL = sql.substring( sql.indexOf("where") + 6, sql.length()); // Á´½ÓÀàÐÍÊôÐÔ values.get(i).lruleText = ""; values.get(i).lseniorRuleText = ""; values.get(i).lexpToSQL = ""; } else { // Á´½ÓÀàÐÍ Document doc = conditionPane.getSeniorTreeDoc(); if (doc == null) { values.get(i).lseniorRuleText = ""; } else { values.get(i).lseniorRuleText = doc.asXML(); } values.get(i).lruleText = Tool.qtTOXMl(qt).asXML(); Parser parser = new Parser(qt); parser.setAddGrandRightFlag(false); String sql = parser.parseToSql(); values.get(i).lexpToSQL = sql.substring( sql.indexOf("where") + 6, sql.length()); // ÒµÎñÀàÐÍÊôÐÔ values.get(i).ruleText = ""; values.get(i).seniorRuleText = ""; values.get(i).expToSQL = ""; } } } else { // »ñÈ¡¹æÔòÃû³Æ if (funclet.getRightMainPanel().getRuleName() == null || funclet.getRightMainPanel().getRuleName().equals("")) { JOptionPane.showMessageDialog( com.vci.rmip.logon.client.LogonApplication.frame, "ÇëÉèÖùæÔòÃû³Æ", "Ìáʾ", JOptionPane.INFORMATION_MESSAGE); return false; } for (int i = 0; i < values.size(); i++) { values.get(i).ruleText = ""; values.get(i).seniorRuleText = ""; values.get(i).expToSQL = ""; values.get(i).lruleText = ""; values.get(i).lseniorRuleText = ""; values.get(i).lexpToSQL = ""; values.get(i).ruleName = funclet.getRightMainPanel() .getRuleName(); values.get(i).ruleType = funclet.getRightMainPanel() .getRuleType(); } } return true; } public static void setOpDatas(final AbstractUIFunclet funclet, List ops) { // ¹æÔòtable JCheckBox[] checkBoxs = ((OrdinaryOpPanel) funclet.getRightMainPanel() .getOrdinaryOpPanel()).getOpCheckBoxs(); for (JCheckBox cb : checkBoxs) { for (OpItem op : ops) { if (cb.getText().equals(op.getName())) { cb.setSelected((Boolean) op.getValue() == null ? false : (Boolean) op.getValue()); } } } // ¹ØÏµºÍԾǨ JCheckBox[] rlcheckBoxs = ((RelationAndLifeCycleOpPanel) funclet .getRightMainPanel().getRelationAndLifeCycleOpPanel()) .getOpCheckBoxs(); for (JCheckBox cb : rlcheckBoxs) { for (OpItem op : ops) { if (cb.getText().equals(op.getName())) { cb.setSelected((Boolean) op.getValue() == null ? false : (Boolean) op.getValue()); } } } } public static void initTipPanel(QTD qtd, final AbstractUIFunclet funclet) { JDialog dialog = new JDialog(); dialog.add(funclet.getTipPanel()); // JRadioButton rdGeneral = new JRadioButton(); // JRadioButton rdSenior = new JRadioButton(); funclet.getTipPanel().removeAll(); funclet.getTipPanel().updateUI(); funclet.getTipPanel().setAutoscrolls(true); funclet.getTipPanel().setLayout(new GridBagLayout()); String[] abNames = "a,s,d,d".split(",");// qtd.abNames; if (true) { for (int i = 0; i < abNames.length; i++) { GridBagConstraints g = new GridBagConstraints(); g.anchor = GridBagConstraints.WEST; g.gridx = 0; g.gridy = i; final JButton btnRemove = new JButton("x"); funclet.getTipPanel().add(btnRemove, g); final JLabel labName = new JLabel(abNames[i]); g.gridx = 1; funclet.getTipPanel().add(labName, g); g.gridx = 2; final JComboBox combCons = new JComboBox(); combCons.addItem("="); combCons.addItem("!="); combCons.addItem("包含"); funclet.getTipPanel().add(combCons, g); g.gridx = 3; g.gridwidth = GridBagConstraints.REMAINDER; final JTextField tfValue = new JTextField(10); funclet.getTipPanel().add(tfValue, g); btnRemove.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { funclet.getTipPanel().remove(btnRemove); funclet.getTipPanel().remove(labName); funclet.getTipPanel().remove(combCons); funclet.getTipPanel().remove(tfValue); funclet.getTipPanel().updateUI(); } }); } dialog.setVisible(true); } } public static void clear(AbstractUIFunclet funclet) { BooleanTableModel ruleModel = (BooleanTableModel) funclet .getRightMainPanel().getRuleTable().getModel(); // Ë¢ÐÂÒ³Ãæ»º´æ ruleModel.RemoveAllConditionValue(); ruleModel.setRowCount(0); } }