/**
* 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. windows下设置/删除Tomcat的开机自启动

    绿色版tomcat在配置好Java环境以后直接运行bin下面的startup.bat就能够正常启动,但是在客户这里很多时候都 需要tomcat开机自动启动.下面简单介绍一如何在windows下面开机自 ...

  2. IO库 8.5

    题目:重写8.4中的函数,将每一个单词作为一个独立的元素进行存储. #include <iostream> #include <fstream> #include <st ...

  3. 安装爬虫scrapy

    使用easy_install安装scrapy,报错 error: Setup script exited with error: command 'gcc' failed with exit stat ...

  4. windows下安装testlink

    因为项目中一直没有使用任何测试用例管理工具,如果需要的时候都是个人写在的excle里各自保存,因为没有系统的记录当时测试方法和测试用例,每次需要再次测试已有的功能时,因为时间太长,而往往记不得当时是怎 ...

  5. Nuget升级问题

    想在项目中通过“Add Library Package Reference”添加Moq,结果出现错误提示说Nuget版本太低. 要升级Nuget需要先卸载原来的Nuget. 1.在控制面板,卸载程序里 ...

  6. Address already in use: JVM_Bind错误的解决

    1,独立运行的Tomcat没有关闭. 自安装的tomcat程序设置开机自动运行,或者在之前运行过,先关闭ecplipse或jbuilder,在任务管理器中找到Tomcat的进程,将其 kill掉,即可 ...

  7. Android学习路径图

    一个PHPer转战Android学习过程: 直接跨过java的学习,原因有我之前看过毕向东和张孝祥的Java基础课程,虽然中间好几次看睡着,但java的环境是能跑起来的.我建议大家如果没有Java基础 ...

  8. qcow2、raw、vmdk等镜像格式

    转自 http://www.prajnagarden.com/?p=248 http://blog.csdn.net/starshine/article/details/8179483 转者言:对pr ...

  9. uva 719 Glass Beads(后缀自动机)

    [题目链接] https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=524&am ...

  10. POJ 3693 Maximum repetition substring(后缀数组+ST表)

    [题目链接] poj.org/problem?id=3693 [题目大意] 求一个串重复次数最多的连续重复子串并输出,要求字典序最小. [题解] 考虑错位匹配,设重复部分长度为l,记s[i]和s[i+ ...