JAVA GUI学习 - JTable表格组件学习_C ***

  1 /**
  2  * JTable高级应用
  3  * @author Wfei
  4  *
  5  */
  6 public class JTableKnow_C extends JFrame
  7 {
  8     JTable jTable;
  9     MyJMenuItem jMenuItem;
 10     MyJMenuItem jMenuItem2;
 11     JPopupMenu jPopupMenu;
 12     JMenu jMenu;
 13     public JTableKnow_C()
 14     {
 15         this.setBounds(300, 100, 400, 300);
 16         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 17         
 18         Object[][] tableData = new Object[3][4];
 19         tableData[0] = new Object[]{"1-1","1-2","左",true};
 20         tableData[1] = new Object[]{"2-1","2-2","右",false};
 21         tableData[2] = new Object[]{"3-1","3-2","左",true};
 22         Object[] tableColName = new Object[]{"第一列名","第二列名","第三列名","第四列名"};
 23         //创建表格模型
 24         DefaultTableModel defaultTableModel = new DefaultTableModel(tableData,tableColName);
 25         //实例化表格
 26         jTable = new JTable(defaultTableModel)
 27         {
 28             /**
 29              * 判断某一列是否为boolean类型,如果是:以复选框显示
 30              */
 31             @Override
 32             public Class<?> getColumnClass(int column)
 33             {
 34                 // TODO Auto-generated method stub
 35                 return jTable.getValueAt(0, column).getClass();
 36             }
 37             /**
 38              * 设置某一行、某一列、或某个单元格是否可编辑
 39              */
 40             @Override
 41             public boolean isCellEditable(int row, int column)
 42             {
 43                 // TODO Auto-generated method stub
 44                 if (row == 1 && column == 1)
 45                 {
 46                     return false;
 47                 }
 48                 else {
 49                     return true;
 50                 }
 51             }
 52             //表格的标题,必须配合滚动面板一起使用才能显示出来
 53         };
 54         //实例化滚动面板
 55         JScrollPane jScrollPane = new JScrollPane(jTable);
 56         this.add(jScrollPane);
 57         
 58         jPopupMenu = new JPopupMenu();
 59         jMenu = new JMenu("更改为:");
 60         jMenuItem = new MyJMenuItem("左",1);
 61         jMenuItem2 = new MyJMenuItem("右",1);
 62         jPopupMenu.add(jMenu);
 63         jMenu.add(jMenuItem);jMenu.add(jMenuItem2);
 64         
 65         jTable.setComponentPopupMenu(jPopupMenu);
 66         jPopupMenu.addPopupMenuListener(new PopupMenuListener()
 67         {
 68             /**
 69              * 设置个性化显示菜单的监听事件
 70              */
 71             @Override
 72             public void popupMenuWillBecomeVisible(PopupMenuEvent e)
 73             {
 74                 int index = jTable.getSelectedRow();
 75                 if (index != -1)
 76                 {
 77                     String str = jTable.getValueAt(index, 2).toString();
 78                     if (str.equals("左"))
 79                     {
 80                         jMenuItem.setVisible(false);
 81                         jMenuItem2.setVisible(true);
 82                     }
 83                     else {
 84                         jMenuItem.setVisible(true);
 85                         jMenuItem2.setVisible(false);
 86                     }
 87                 }
 88             }
 89             @Override
 90             public void popupMenuWillBecomeInvisible(PopupMenuEvent e)
 91             {
 92             }
 93             @Override
 94             public void popupMenuCanceled(PopupMenuEvent e)
 95             {
 96             }
 97         });
 98         //为菜单的每个jMenuItem加上监听器
 99 //        addListenerToJMenuItem(jMenu);
100     }
101 //    public void addListenerToJMenuItem(Container container)
102 //    {
103 //        for (Component component : container.getComponents())
104 //        {
105 //            if (component == JMenuItem.class)
106 //            {
107 //                System.out.println("1111111");
108 //                JMenuItem jMenuItem = (JMenuItem) component;
109 //                jMenuItem.addActionListener(new MenuItemListener());
110 //            }
111 //            else {
112 //                System.out.println("2222222");
113 //                JMenu jMenu = (JMenu) component;
114 //                addListenerToJMenuItem(jMenu);
115 //            }
116 //        }
117 //    }
118     /**
119      * 菜单项监听器
120      * @author Administrator
121      *
122      */
123     private class MenuItemListener implements ActionListener
124     {
125 
126         @Override
127         public void actionPerformed(ActionEvent e)
128         {
129             JMenuItem item = (JMenuItem)e.getSource();
130             // TODO Auto-generated method stub
131             //JOptionPane.showMessageDialog(null, item.getText());
132             //判断是否有选中项
133             if(jTable.getSelectedRow() != -1)
134             {
135                 //判断按钮
136                 if (item == jMenuItem)
137                 {
138                     JOptionPane.showMessageDialog(null, "已更改为:右");
139                 }
140                 else {
141                     JOptionPane.showMessageDialog(null, "已更改为:左");
142                 }
143             }
144             else
145             {
146                 JOptionPane.showMessageDialog(null, "请选择修改的用户");
147             }
148         }
149         
150     }
151     public static void main(String[] args)
152     {
153         JTableKnow_C jTableKnowC = new JTableKnow_C();
154         jTableKnowC.setVisible(true);
155     }
156 }

 

posted @ 2013-09-22 11:02  魏飞  阅读(550)  评论(0编辑  收藏  举报
你见

或者不见我
我就在那里
不悲不喜
你念

或者不念我
情就在那里
不来不去
你爱

或者不爱我
爱就在那里
不增不减
你跟

或者不跟我
我的手就在你的手里
不舍不弃
来我怀里
或者
让我住进你的心里
默然

相爱
寂静

喜欢
Mr Frank