MyEclipse中用Swing中的JTable控件,怎样增加table的列数?

我把控件拖到面板后,自动生成4列,我现在需要有9列。我试了直接改代码,但是界面没变化。还有就是怎样改变Title的名字。还有就是用MyEclipse进行图形界面,编程以及... 我把控件拖到面板后,自动生成4列,我现在需要有9列。我试了直接改代码,但是界面没变化。还有就是怎样改变Title的名字。还有就是用MyEclipse进行图形界面,编程以及连接数据库的操作,有什么资料可以学习参考!谢谢 展开
 我来答
yugi111
推荐于2016-03-16 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
给你参考
private static final String[] NAMES = { "Integer numbers", "Real numbers", "Other tokens" };

增加这个,就能增加列,自己琢磨

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.text.*;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import javax.swing.*;
import javax.swing.table.*;

public class TokenCategorizer extends JFrame
{
private static final long serialVersionUID = 1L;
private static final String FILE_NAME = "test.txt";
private static final String[] NAMES = { "Integer numbers", "Real numbers", "Other tokens" };
private static String[][] data = null;
private static JList jList = null;
private static JTable tableView = null;
private static LinkedList<String[]> list = new LinkedList<String[]> ();
private static String[] strs = new String[NAMES.length];
private static Vector<SupportedLaF> lafVector = new Vector<SupportedLaF> ();
private static Map<Integer, Vector<String>> tabelDataMap = new ConcurrentHashMap<Integer, Vector<String>> ();
private static final String PLASTIC3D = "com.jgoodies.looks.plastic.Plastic3DLookAndFeel";
private static final String PLASTIC = "com.jgoodies.looks.plastic.PlasticLookAndFeel";
private static final String PLASTXP = "com.jgoodies.looks.plastic.PlasticXPLookAndFeel";

public TokenCategorizer ( String title )
{
UIManager.installLookAndFeel ("Plastic3D", PLASTIC3D);
UIManager.installLookAndFeel ("Plastic", PLASTIC);
UIManager.installLookAndFeel ("PlasticXP", PLASTXP);
UIManager.LookAndFeelInfo[] installedLafs = UIManager.getInstalledLookAndFeels ();
for ( UIManager.LookAndFeelInfo lafInfo : installedLafs )
{
try
{
Class<?> lnfClass = Class.forName (lafInfo.getClassName ());
LookAndFeel laf = (LookAndFeel) ( lnfClass.newInstance () );
if (laf.isSupportedLookAndFeel ())
{
String name = lafInfo.getName ();
lafVector.add (new SupportedLaF (name, laf));
}
}
catch (Exception e)
{
continue;
}
}
this.setTitle (title);
}

private static class SupportedLaF
{
String name;
LookAndFeel laf;

SupportedLaF ( String name, LookAndFeel laf )
{
this.name = name;
this.laf = laf;
}

public String toString ()
{
return name;
}
}

private static void createTable ( TokenCategorizer tc )
{
TableModel dataModel = new AbstractTableModel ()
{
private static final long serialVersionUID = 1L;

public int getColumnCount ()
{
return NAMES.length;
}

public int getRowCount ()
{
return data[0].length;
}

public Object getValueAt ( int row, int col )
{
return data[col][row];
}

public String getColumnName ( int column )
{
return NAMES[column];
}
};
tableView = new JTable (dataModel);
tableView.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
tableView.setRowSelectionInterval (0, 0);
initTableData (tableView, list, strs);
tableView.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseClicked ( MouseEvent e )
{
initTableData (tableView, list, strs);
}
});
JScrollPane scrollpane = new JScrollPane (tableView);
scrollpane.setPreferredSize (new Dimension (500, 400));
tc.add (scrollpane);
}

private static void initTableData ( final JTable tableView, final LinkedList<String[]> list, final String[] strs )
{
try
{
list.clear ();
int row = tableView.getSelectedRow ();
Vector<String> v = null;
if (null != ( v = tabelDataMap.get (row) ))
{
jList.setListData (v);
}
else
{
for ( int j = 0; j < NAMES.length; j++ )
{
strs[j] = data[j][row];
}
permutations (list, NAMES.length, strs, 0, -1);
v = new Vector<String> ();
for ( String[] strings : list )
{
v.add (Arrays.toString (strings).replaceAll ("[\\[\\]]", ""));
}
jList.setListData (v);
tabelDataMap.put (row, v);
}
}
catch (Exception e)
{}
}

private static void createList ( TokenCategorizer tc )
{
ListModel dataModel = new AbstractListModel ()
{
private static final long serialVersionUID = 1L;

@Override
public int getSize ()
{
return NAMES.length;
}

@Override
public Object getElementAt ( int index )
{
return NAMES[index];
}
};
jList = new JList (dataModel);
jList.addMouseListener (new MouseAdapter()
{
@Override
public void mouseClicked ( MouseEvent e )
{
System.out.println (jList.getSelectedValue ());
}
});
}

private static void initFrame ( TokenCategorizer tc )
{
tc.setLayout (new FlowLayout (FlowLayout.LEFT));
tc.setSize (800, 400);
tc.setLocationRelativeTo (null);
tc.pack ();
tc.setResizable (false);
tc.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
tc.setVisible (true);
}

private static LinkedList<String[]> permutations ( LinkedList<String[]> list, int count, String[] array, int ind,
int start, int... indexs )
{
start++;
if (start > count - 1)
{
return null;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs[start] = 0; indexs[start] < array.length; indexs[start]++ )
{
permutations (list, count, array, 0, start, indexs);
if (start == count - 1)
{
String[] temp = new String[count];
for ( int i = count - 1; i >= 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
boolean flag = true;
L: for ( int i = 0; i < temp.length; i++ )
{
for ( int j = i + 1; j < temp.length; j++ )
{
if (temp[i].equals (temp[j]))
{
flag = false;
break L;
}
}
}
if (flag)
{
list.add (temp);
}
}
}
return list;
}

private static void initOthers ( final TokenCategorizer tc )
{
JPanel jPanel = new JPanel ();
BoxLayout boxLayout = new BoxLayout (jPanel, BoxLayout.Y_AXIS);
jPanel.setLayout (boxLayout);
jPanel.setPreferredSize (new Dimension (300, 400));
JScrollPane scrollpane = new JScrollPane (jList);
scrollpane.setPreferredSize (new Dimension (300, 400));
jPanel.add (scrollpane);
final JFileChooser chooser = new JFileChooser ();
JPanel bottomPanel = new JPanel ();
JButton jButton = new JButton ("Import File Data");
jButton.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed ( ActionEvent e )
{
int returnVal = chooser.showOpenDialog (tc);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile ();
loadFileData (file.getPath ());
SwingUtilities.updateComponentTreeUI (tc);
tabelDataMap.clear ();
tableView.setRowSelectionInterval (0, 0);
initTableData (tableView, list, strs);
}
}
});
bottomPanel.setLayout (new FlowLayout (FlowLayout.LEFT));
final JComboBox jcb = new JComboBox (lafVector);
jcb.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed ( ActionEvent e )
{
SupportedLaF supportedLaF = ( (SupportedLaF) jcb.getSelectedItem () );
LookAndFeel laf = supportedLaF.laf;
try
{
UIManager.setLookAndFeel (laf);
SwingUtilities.updateComponentTreeUI (tc);
if (null != chooser)
{
SwingUtilities.updateComponentTreeUI (chooser);
}
}
catch (UnsupportedLookAndFeelException exc)
{
( (DefaultComboBoxModel) jcb.getModel () ).removeElement (supportedLaF);
}
}
});
bottomPanel.add (jcb);
bottomPanel.add (jButton);
jPanel.add (bottomPanel);
tc.add (jPanel);
}

private static void loadFileData ( String fileName )
{
Locale locale = new Locale ("en", "US");
Scanner scanner = null;
String result = "";
String line = null;
LinkedList<String> listInt = new LinkedList<String> ();
LinkedList<String> listDouble = new LinkedList<String> ();
LinkedList<String> listOthers = new LinkedList<String> ();
try
{
scanner = new Scanner (new File (fileName)).useDelimiter ("[\\s\r\n\t\f]+");
while (scanner.hasNext ())
{
line = scanner.next ();
result += line + " ";
if (line.matches ("^(\\+|\\-)?[\\d,]+$"))
{
NumberFormat nf = NumberFormat.getInstance (locale);
listInt.add (nf.parse (line).toString ());
}
else if (line.matches ("^[\\dE\\.\\+\\-]+$"))
{
NumberFormat f = NumberFormat.getInstance (locale);
if (f instanceof DecimalFormat)
{
( (DecimalFormat) f ).setDecimalSeparatorAlwaysShown (true);
}
listDouble.add (f.parse (line).toString ());
}
else
{
listOthers.add (line);
}
}
}
catch (Exception e)
{}
scanner.close ();
int max =
listInt.size () > listDouble.size () ? listInt.size () > listOthers.size () ? listInt.size ()
: listOthers.size () : listDouble.size () > listOthers.size () ? listDouble.size ()
: listOthers.size ();
int size1 = listInt.size ();
for ( int i = size1; i < max; i++ )
{
listInt.add (" ");
}
int size2 = listDouble.size ();
for ( int i = size2; i < max; i++ )
{
listDouble.add ("  ");
}
int size3 = listOthers.size ();
for ( int i = size3; i < max; i++ )
{
listOthers.add ("   ");
}
String reg = "[\\[\\]]";
String intdata = listInt.toString ().replaceAll (reg, "");
String realdata = listDouble.toString ().replaceAll (reg, "");
String otherdata = listOthers.toString ().replaceAll (reg, "");
System.out.println ("Text file: ");
System.out.println (result);
System.out.println ("sumDouble: ");
System.out.println (realdata.replaceAll ("[,\\s]+$", ""));
System.out.println ("sumInt: ");
System.out.println (intdata.replaceAll ("[,\\s]+$", ""));
System.out.println ("sumOther: ");
System.out.println (otherdata.replaceAll ("[,\\s]+$", ""));
String[] ints = intdata.split (",\\s");
String[] reals = realdata.split (",\\s");
String[] others = otherdata.split (",\\s");
data = new String[][] { ints, reals, others };
}

public static void main ( String[] args )
{
loadFileData (FILE_NAME);
TokenCategorizer tc = new TokenCategorizer ("Categories/columns containing tokens");
createList (tc);
createTable (tc);
initOthers (tc);
initFrame (tc);
}

}
追问
首先表示感谢!但是我在这方面是小白,想用Myeclipse像用VS一样做界面,能实现吗?您给的这个代码,怎么使用,真心没琢磨出来。希望继续指教,谢谢!
追答
NAMES
根据NAMES来改,就可以改列
----------------------------

TableModel dataModel = new AbstractTableModel ()
{
private static final long serialVersionUID = 1L;

public int getColumnCount ()
{
return NAMES.length;
}

public int getRowCount ()
{
return data[0].length;
}

public Object getValueAt ( int row, int col )
{
return data[col][row];
}

public String getColumnName ( int column )
{
return NAMES[column];
}
};
tableView = new JTable (dataModel);
育知同创教育
2016-02-21 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
MyEclipse中用Swing中的JTable控件,动态增加table的列数的方法:
DefaultTableModel dm = new DefaultTableModel(0, 0);
//控制列数的表头,可以动态改变,列就随着改变
String header[] = new String[] { "Status", "Task Title", "Start",
"Pause", "Stop", "Statulses" };
dm.setColumnIdentifiers(header); //设置表头
tblTaskList.setModel(dm); //添加到tablist
//开始循环处理集合对象
for (int count = 1; count <= 10; count++) {
Vector<Object> data = new Vector<Object>();
data.add(count);
data.add("Project Title" + count);
data.add("Start");
data.add("Stop");
data.add("Pause");
data.add("Status");
System.out.println("test :- " + count);
dm.addRow(data);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式