/**
* 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);
}
}

JAVA GUI学习 - JTable表格组件学习_C ***的更多相关文章

  1. JAVA GUI学习 - JTable表格组件学习_A ***

    public class JTableKnow_A extends JFrame { public JTableKnow_A() { this.setBounds(300, 100, 400, 300 ...

  2. Java GUI编程4---标签组件JLabel

    Java GUI编程4---标签组件JLabel 2018年06月11日 22:06:58 蓝蓝223 阅读数 12103更多 个人分类: Java书籍摘抄 所属专栏: Java Swing图形界面 ...

  3. JAVA GUI学习 - JOptionPane对话框组件学习

    /** * 对话框 - 学习笔记 * @author Wfei * */ public class JoptionPaneKnow extends JFrame { public JoptionPan ...

  4. JAVA GUI学习 - JTree树结构组件学习 ***

    public class JTreeKnow extends JFrame { public JTreeKnow() { this.setBounds(300, 100, 400, 500); thi ...

  5. JAVA GUI学习 - JTabbedPane选项卡组件学习

    public class JTabbedPaneKnow extends JFrame { JTabbedPane jTabbedPane; JPanel jPanelRed; JPanel jPan ...

  6. 编写Java程序,使用JTable表格组件展现人员信息列表

    返回本章节 返回作业目录 需求说明: 使用JTable组件显现人员信息列表 实现思路: 创建一个JTable对象. 创建一个JScrollPane对象(显示横向和纵向滚动条). 将表格添加到滚动面板. ...

  7. Informatic学习总结_day03_update组件学习

  8. C# BackgroundWorker组件学习

    C# BackgroundWorker组件学习  C# BackgroundWorker组件学习 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用Ba ...

  9. 第二百二十八节,jQuery EasyUI,TreeGrid(树形表格)组件

    jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使 ...

随机推荐

  1. ADO知识的运用二(Day 28)

    可能是最近有些沉迷于电视剧了,所以,好多天都没写总结了.我知道这样不好,但又老管不住自己,也许是我自控力太差了吧......呵呵,如果在不写总结,可能以后就会成为习惯了.所以今天要赶紧补上...... ...

  2. Hadoop学习之自定义二次排序

    一.概述    MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往 往有要对reduce输出结果进行二次排 ...

  3. windows下搭建python+selenium环境

    1.安装python https://www.python.org/ 2.安装setuptools(python的基础包工具) 下载地址:https://pypi.python.org/pypi/se ...

  4. mysql 字段注释

    create table student3(id int(30) primary key comment 'ID',name varchar(255) comment '姓名',address var ...

  5. 十大最值得注意的MySQL变量

    MySQL数据库中的变量非常多,下文为您整理出了十大最值得注意的MySQL变量,希望对您学习MySQL数据库能够有一些帮助. AD: MySQL变量很多,其中有一些MySQL变量非常值得我们注意,下面 ...

  6. LaTeX空格

    由于LaTeX 采用的是源文件编译方式,  默认LaTeX会忽略多余的空格, 如果需要产生一个空格,可以使用 命令 \, 注意代表的是空间键. 例如: Jones, et al.\  (1993), ...

  7. if最简单的用法

    /* Name:if最简单的用法-1 Copyright:By.不懂网络 Author: Yangbin Date:2014年2月9日 03:00:58 Description:if最简单的用法,真则 ...

  8. java 构造方法 constructor demo笔记

    demo 地址 http://pan.baidu.com/s/1bo2FG1T package com.ws.study; /** * @author Administrator * */ publi ...

  9. Socket编程指南及示例程序

    例子代码就在我的博客中,包括六个UDP和TCP发送接受的cpp文件,一个基于MFC的局域网聊天小工具工程,和此小工具的所有运行时库.资源和执行程序.代码的压缩包位置是http://www.blogja ...

  10. 深度优先搜索算法(DFS)以及leetCode的subsets II

    深度优先搜索算法(depth first search),是一个典型的图论算法.所遵循的搜索策略是尽可能“深”地去搜索一个图. 算法思想是: 对于新发现的顶点v,如果它有以点v为起点的未探测的边,则沿 ...