import javax.swing.JPanel; //导入方法依赖的package包/类
@Override
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
JCheckBox firstEntry = null;
JPopupMenu popupMenu = new JPopupMenu();
JPanel menuPanel = new JPanel();
menuPanel.setFocusCycleRoot(true);
popupMenu.add(menuPanel);
menuPanel.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.BASELINE_LEADING;
constraints.weightx = 1;
constraints.gridx = 0;
Set visibleColumns = dataPanel.getVisibleColumns();
DataViewTableUIModel dvtm = dataPanel.getModel();
for(int i = 0; i < dvtm.getColumnCount(); i++) {
JCheckBox columnEntry = new JCheckBox(dvtm.getColumnName(i));
columnEntry.setActionCommand(Integer.toString(i));
columnEntry.setSelected(visibleColumns.contains(i));
columnEntry.addActionListener(columnVisibilityToggler);
constraints.gridy += 1;
menuPanel.add(columnEntry, constraints);
if(firstEntry == null) {
firstEntry = columnEntry;
}
}
constraints.gridy += 1;
menuPanel.add(new JSeparator(), constraints);
JCheckBox checkboxItem = new JCheckBox("Fit column width");
checkboxItem.setSelected(dataPanel.getAutoResizeMode() != JTable.AUTO_RESIZE_OFF);
checkboxItem.addActionListener(fitColumnWidthToggler);
constraints.gridy += 1;
menuPanel.add(checkboxItem, constraints);
popupMenu.show(button, 0, button.getHeight());
if(firstEntry == null) {
checkboxItem.requestFocus();
} else {
firstEntry.requestFocus();
}
}