java swing Jtable 求细节解析

问题描述

问题:增加一列和删除一列中用到的for循环。具体有什么用。importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;importjavax.swing.table.*;importjava.util.Vector;publicclassJ_TableextendsJFrame{DefaultTableModelm_data;JTablem_view;publicJ_Table(){super("表格应用示例");Containerc=getContentPane();c.setLayout(newFlowLayout());inti;//添加四个按钮JButton[]b={newJButton("添加行"),newJButton("添加列"),newJButton("删除行"),newJButton("删除列")};for(i=0;i<4;i++)c.add(b[i]);m_data=newDefaultTableModel();//创建一个空的数据表格m_view=newJTable(m_data);m_view.setPreferredScrollableViewportSize(newDimension(300,150));//设置表格的显示区域大小m_view.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);JScrollPanesPane=newJScrollPane(m_view);c.add(sPane);b[0].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){mb_addRow();System.out.println("添加一行");}//方法actionPerformed结束}//实现接口ActionListener的内部类结束);//方法addActionListener调用结束b[1].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){mb_addColumn();System.out.println("添加一列");}//方法actionPerformed结束}//实现接口ActionListener的内部类结束);//方法addActionListener调用结束b[2].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){mb_deleteRow();System.out.println("删除当前行");}//方法actionPerformed结束}//实现接口ActionListener的内部类结束);//方法addActionListener调用结束b[3].addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){mb_deleteColumn();System.out.println("删除当前列");}//方法actionPerformed结束}//实现接口ActionListener的内部类结束);//方法addActionListener调用结束}//J_Table构造方法结束publicvoidmb_addColumn()//添加一列{intcNum=m_data.getColumnCount();intrNum=m_data.getRowCount();Strings="列"+(cNum+1);intc=m_view.getSelectedColumn();System.out.println("当前列号为:"+c);if(cNum==0||rNum==0||c<0){m_data.addColumn(s);return;}//if结构结束c++;Vector<String>vs=mb_getColumnNames();//表头的处理vs.add(c,s);Vectordata=m_data.getDataVector();/*for(inti=0;i<data.size();i++){Vectore=(Vector)data.get(i);e.add(c,newString(""));}*///for循环结束m_data.setDataVector(data,vs);}//方法mb_addColumn结束publicvoidmb_addRow()//添加一行{intcNum=m_data.getColumnCount();if(cNum==0)mb_addColumn();intrNum=m_data.getRowCount();intr=mb_getRowCurrent();System.out.println("当前行号为:"+r);m_data.insertRow(r,(Vector)null);}//方法mb_addRow结束publicvoidmb_deleteColumn()//删除一列{intcNum=m_data.getColumnCount();if(cNum==0)return;intc=m_view.getSelectedColumn();if(c<0)c=0;System.out.println("当前列号为:"+c);Vector<String>vs=mb_getColumnNames();//表头的处理vs.remove(c);Vectordata=m_data.getDataVector();/*for(inti=0;i<data.size();i++){Vectore=(Vector)data.get(i);e.remove(c);}*///for循环结束m_data.setDataVector(data,vs);}//方法mb_deleteColumn结束publicvoidmb_deleteRow()//删除一行{intrNum=m_data.getRowCount();if(rNum>0){intrEdit=mb_getRowCurrent();m_data.removeRow(rEdit);}}//方法mb_deleteRow结束publicVector<String>mb_getColumnNames()//取得列名称{Vector<String>vs=newVector<String>();intcNum=m_data.getColumnCount();for(inti=0;i<cNum;i++)vs.add(m_data.getColumnName(i));return(vs);}//方法mb_getColumnNames结束publicintmb_getRowCurrent()//取得当前行的行号{intr=m_view.getSelectedRow();if(r<0)r=0;return(r);}//方法mb_getRowCurrent结束publicstaticvoidmain(Stringargs[]){JFrameapp=newJ_Table();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.setSize(350,250);app.setVisible(true);}//方法main结束}//类J_Table结束

解决方案

解决方案二:
因为是一整“列”数据是以“行”为单位放在table中的假设这个table是一个Vector的话,那每个整“行”就是这个Vector的元素所以要删除“列”的话,要把每一“行”数据的这个“列”位置的元素移除加入也是一个道理
解决方案三:
取出表格里面包含的所有数据对象,删除相应列的数据取出表格中包含的所有数据对象,在指定列位置添加空值
解决方案四:
for(inti=0;i<data.size();i++){Vectore=(Vector)data.get(i);e.add(c,newString(""));}当是将Table中数据存入Vectore中。。在后面程序中e这个也有没有用到。是不是可有可无?
解决方案五:
Vectore=(Vector)data.get(i);这个e是一个对象的引用啊当然不是可有可无e.add(c,newString(""));相当于data.get(i).add(c,newString(""));对e的操作,实际上就是对data.get(i)的操作
解决方案六:
但是如果删掉那2个FOR循环。对程序没有影响的。。至少我测试不出来哪里有什么问题。。请帮忙测试下。。谢谢

时间: 2024-09-09 02:51:38

java swing Jtable 求细节解析的相关文章

Java Swing多线程死锁问题解析

在基于Java Swing进行图形界面开发的时候,经常遇到的就是Swing多线程问题.我们可以想想一下, 如果需要在一个图形界面上显示很多数据,这些数据是经过长时间.复杂的查询和运算得到的.如果在图 形界面的同一个线程中进行查询和运算工作则会导致一段时间界面处于死机状态,这会给用户带来不良的 互动感受.为了解决这个问题,一般会单独启动一个线程进行运算和查询工作,并随时更新图形界面.这 时候,另一个问题就出现了,可能不仅没有解决原来偶尔死机问题,还可能导致程序彻底死掉.幸运的是 在JDK中暗藏了一

按钮-自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙!

问题描述 自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙! /*题目是这样的:创建一个窗体在其中摆放两个内容面板对两个面板进行边框个性化设置.初始状态为第二个面板不可见,当单击第一个面板中的"打开"按钮时,第二个面板即可见:当单击第一个面板中的"关闭"按钮时,第二个面板消失. 以下是我结合书本写的代码,不知道为什么运行不了???*/import javax.swing.*;import java.awt.*;impor

移动-java swing问题,求大神知道,给点思路

问题描述 java swing问题,求大神知道,给点思路 做一个界面,一只黑点在界面上随机连续移动,并不断的漏出墨点在界面上,界面全黑后改成白点运行,漏出白点,如此循环 解决方案 http://zhidao.baidu.com/link?url=yllryC5z0z2Y0KgQscNOnxgHGwgFbTo2vz2BfLtcpaJvNv9Ok4HilvoyfxmsMwxSIo7YttFqJappO4MMm9vzq_

求java swing运行机制

问题描述 求java swing运行机制 我自己写了一个非常基本的jframe的demo,什么控件都不加的时候,界面可以正常出来,但是一加控件,按钮,jlable之类的,就界面就出不来,所以想了解一下gui加载的机制,看看问题出在哪里 解决方案 gui的机制还真说不好,你要是加了控件显示不出来,肯定是你写的代码有问题,放上来可以讨论下. 解决方案二: java运行机制Java运行机制Java语言的运行机制 解决方案三: gui的机制还真说不好,你要是加了控件显示不出来,肯定是你写的代码有问题,放

求高手解析json java的

问题描述 求高手解析json java的 {"data":[{"result":{"result":[{"data":["2","9","2","6","6"],"key":"ball"}]},"phasetype":"202","phas

方法-java swing中的JTable问题

问题描述 java swing中的JTable问题 我的问题是这样的: 我想在这个界面中同时实现增删改查的功能,现在还差改的功能. 我想在JTable中双击某个单元格,修改某个值后以实现改的功能, 现在我没法把修改后的某条通讯录信息重新写入文件,写入文件的方法是用object流, 我想问这该怎么实现 先谢谢各位大神了!! 解决方案 JTable本来就可以编辑的,如果不想编辑可以这样来实现 不想改JTABLE内的内容,先这样做了 jTable = new JTable(int rowData, i

Java Swing 之JTable及其简单的用法

我们都知道JTable需要使用一个Model配合才能更好地发挥其作用.而使用Model有好多种方法,但是难易程度却大大不同,比如说我们使用AbstractTableModel接口要实现里面的好多方法,相对于这一点,使用DefaulttableModel 就可以大大而简化我们的工作量,我们只需要实现自己需要的方法就可以了.下面是一个简单的使用案例: package UsefulKnowledge; import java.awt.BorderLayout; import java.awt.Cont

求推荐一般java swing 的书

问题描述 最近在看那本 java swing 第二版, 感觉有点像cookbook,除了这本讲swing的,还有比较好的么? 解决方案 O'Reilly <Swing Hacks>O'Reilly <Java 2D>Prentice Hall <Filthy Rich Clients><Desktop Java Live>解决方案二:<Java 2 图形设计卷Ⅱ- SWING>这本书很不错,也是Sun官方授权的,网上有电子书,不过电子书的内容有不

java Swing列表框和组合框

列表框和组合框在Swing中工作就像它们在老的AWT中工作一样,但如果我们需要它,它们同样被增加功能.另外,它也更加的方便易用.例如,JList中有一个显示String数组的构建器(奇怪的是同样的功能在JComboBox中无效!).下面的例子显示了它们基本的用法.   //: ListCombo.java // List boxes & Combo boxes package c13.swing; import java.awt.*; import java.awt.event.*; impor