/**
* JTable高级应用
* @author Wfei
*
*/
public class JTableKnow_C extends JFrame
{
JTable jTable;
MyJMenuItem jMenuItem;
MyJMenuItem jMenuItem2;
JPopupMenu jPopupMenu;
JMenu jMenu;
public JTableKnow_C()
{
this.setBounds(300, 100, 400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Object[][] tableData = new Object[3][4];
tableData[0] = new Object[]{"1-1","1-2","左",true};
tableData[1] = new Object[]{"2-1","2-2","右",false};
tableData[2] = new Object[]{"3-1","3-2","左",true};
Object[] tableColName = new Object[]{"第一列名","第二列名","第三列名","第四列名"};
//创建表格模型
DefaultTableModel defaultTableModel = new DefaultTableModel(tableData,tableColName);
//实例化表格
jTable = new JTable(defaultTableModel)
{
/**
* 判断某一列是否为boolean类型,如果是:以复选框显示
*/
@Override
public Class<?> getColumnClass(int column)
{
// TODO Auto-generated method stub
return jTable.getValueAt(0, column).getClass();
}
/**
* 设置某一行、某一列、或某个单元格是否可编辑
*/
@Override
public boolean isCellEditable(int row, int column)
{
// TODO Auto-generated method stub
if (row == 1 && column == 1)
{
return false;
}
else {
return true;
}
}
//表格的标题,必须配合滚动面板一起使用才能显示出来
};
//实例化滚动面板
JScrollPane jScrollPane = new JScrollPane(jTable);
this.add(jScrollPane); jPopupMenu = new JPopupMenu();
jMenu = new JMenu("更改为:");
jMenuItem = new MyJMenuItem("左",1);
jMenuItem2 = new MyJMenuItem("右",1);
jPopupMenu.add(jMenu);
jMenu.add(jMenuItem);jMenu.add(jMenuItem2); jTable.setComponentPopupMenu(jPopupMenu);
jPopupMenu.addPopupMenuListener(new PopupMenuListener()
{
/**
* 设置个性化显示菜单的监听事件
*/
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e)
{
int index = jTable.getSelectedRow();
if (index != -1)
{
String str = jTable.getValueAt(index, 2).toString();
if (str.equals("左"))
{
jMenuItem.setVisible(false);
jMenuItem2.setVisible(true);
}
else {
jMenuItem.setVisible(true);
jMenuItem2.setVisible(false);
}
}
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e)
{
}
@Override
public void popupMenuCanceled(PopupMenuEvent e)
{
}
});
//为菜单的每个jMenuItem加上监听器
// addListenerToJMenuItem(jMenu);
}
// public void addListenerToJMenuItem(Container container)
// {
// for (Component component : container.getComponents())
// {
// if (component == JMenuItem.class)
// {
// System.out.println("1111111");
// JMenuItem jMenuItem = (JMenuItem) component;
// jMenuItem.addActionListener(new MenuItemListener());
// }
// else {
// System.out.println("2222222");
// JMenu jMenu = (JMenu) component;
// addListenerToJMenuItem(jMenu);
// }
// }
// }
/**
* 菜单项监听器
* @author Administrator
*
*/
private class MenuItemListener implements ActionListener
{ @Override
public void actionPerformed(ActionEvent e)
{
JMenuItem item = (JMenuItem)e.getSource();
// TODO Auto-generated method stub
//JOptionPane.showMessageDialog(null, item.getText());
//判断是否有选中项
if(jTable.getSelectedRow() != -1)
{
//判断按钮
if (item == jMenuItem)
{
JOptionPane.showMessageDialog(null, "已更改为:右");
}
else {
JOptionPane.showMessageDialog(null, "已更改为:左");
}
}
else
{
JOptionPane.showMessageDialog(null, "请选择修改的用户");
}
} }
public static void main(String[] args)
{
JTableKnow_C jTableKnowC = new JTableKnow_C();
jTableKnowC.setVisible(true);
}
}

最新文章

  1. Lua面线对象学习
  2. PHP基础班初学感悟
  3. PlaceholderImageView
  4. NHibernate初探(1)
  5. 动漫网站基于jquery的横向手风琴特效
  6. chrmoe debug
  7. Redhat修改本地yum源
  8. AspNet.WebAPI.OData.ODataPQ
  9. MVC4 学习笔记01
  10. 【解题报告】瑞士轮(NOIP2011普及组T3)
  11. 文件末尾判断feof
  12. struts2 简单注解配置代替xml配置文件
  13. mongo 索引,速度
  14. 20135218 Linux 实践二 编译模块
  15. [剑指Offer]53-在排序数组中查找数字(二分查找)
  16. c# ?. 空值传播运算符
  17. 64位Win7系统下vs2010调试无法连接oracle解决办法
  18. petaPoco
  19. 【python】-- RabbitMQ 队列消息持久化、消息公平分发
  20. Call to a member function cellExists() on a non-object /phpexcel/Classes/PHPExcel/Calculation.php on line 3241

热门文章

  1. C# 颜色有3种表示方式: 6位16进制、RGB、 颜色关键字
  2. Netty之ChannelOption
  3. Qt(QML)本地化
  4. Jquery 获取IP地址
  5. ExtJS4.2学习(二)——入门基础
  6. 计算BMI指数的小程序
  7. python 之日期时间处理
  8. mobile&amp;nbsp;web&amp;nbsp;手机开发
  9. android数据库持久化框架
  10. java课程设计(计算器)