/**
* 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. 创建一个支持异步操作的operation

    NSOperationQueue时iOS中常用的任务调度机制.在创建一个复杂任务的时候,我们通常都需要编写NSOperation的子类.在大部分情况下,重写main方法就可以满足要求.main方法执行 ...

  2. .NET软件开发与常用工具清单

    [工欲善其事,必先利其器]软件开发的第一步就是选择高效.智能的工具. 下面列出的工具软件能辅助提高工作效率.  开发类工具 微软.Net平台下的集成开发环境:Visual Studio. Visual ...

  3. VS2010断点无效

    可能的原因如下: 1. 菜单tools->Options->Debugging->General,有个Require  source files to exactly match t ...

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

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

  5. Ubuntu Server修改IP、DNS、hosts

    本文记录下Ubuntu Server 16.04修改IP.DNS.hosts的方法 -------- 1. Ubuntu Server 修改IP sudo vi /etc/network/interf ...

  6. 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲

    原创文章,欢迎转载,转载请注明出处 这次花了10多天了才再次写blog,一是中秋优点小活动,二是这次完成了不少东西.. 终于接近完成了,这次完成了NRF的通讯,并且用了改进的环形缓冲和简单的通讯协议规 ...

  7. .NET(C#):XML序列化时派生类的处理

    原文 www.cnblogs.com/mgen/archive/2011/12/03/2275014.html 目录 1. 针对基类的XmlSerializer序列化派生类 2. 类内成员是派生类的序 ...

  8. css包含块containing block

    <css权威指南>P167: The Containing Block Every element is laid out with respect to its containing b ...

  9. HDU 1076 An Easy Task

    题解:枚举即可…… #include <cstdio> int main(){ int now,y,n,T,count; scanf("%d",&T); whi ...

  10. SQL Server数据转换【包括Geometry类型】的技巧总结

    1. 字段的组合: update new_master_location set tmp_street_unique=street+'_'+city+'_'+state+'_'+zip+'_'+con ...