我设置了三个一维数组:
String [] columnnames = {"Item", "Volume of Item (Cubic Feet)"};
String [] livingroomitems = {"Articial Plant/Hall Tree", "Bar Portable", "Bench", "Bookcase", "Bookshelves", "Chair,Arm", "Chair,Occasional",
"Chair,Overstuffed", "Chair,Recliner", "Chair, Rocker", "Chair, Straight", "Clock, Grandfather*", "Computer",
"Desk, Winthrop", "Desk, Secretary", "Desk, Office", "Desk, Roll Top", "Entertainment Center", "Fireplace Equipment",
"Futon, Single", "Futon, Double", "Futon, Queen", "Futon, King", "Lamp, Floor", "Magazine Rack", "Music Cabinet",
"Ottoman", "Piano, Baby Grand*", "Piano, Parior Grand*", "Piano, Spinet", "Rugs, Large", "Rugs, Small", "Sofa, Large",
"Sofa, Love Seat", "Sofa, Sectional", "Sofa, Hideabed", "Stereo Components", "Stereo Speakers", "Table, Coffee",
"Table, End or Nest", "Table, Sofa", "TV Big Screen*", "TV Console", "TV Model", "TV Stand", "VCR", "Chandelier*"};
int [] livingroomdata = {6, 15, 5, 20, 5, 10, 15, 25, 25, 25, 5, 20, 10, 20, 35, 30, 30, 30, 5, 40, 60, 65, 70, 3, 2, 10, 5, 70, 80, 60, 10,
5, 50, 35, 30, 50, 10, 10, 10, 5, 10, 40, 20, 5, 3, 2, 10 };
我理解通常情况下,我必须创建一个2-D Object
或Vector
以将livingroomitems
和livingroomdata
并排添加到{{1} }。但是,我希望将JTable
保留为livingroomdata
,以便稍后我可以操作数据。是否有可能将1-D阵列逐列放入int
列,以便我不必更改数据类型?
答案 0 :(得分:3)
我想将livingroomdata保留为int,以便稍后可以操作数据。
所有数据操作都应通过TableModel完成。你有像getValueAt()和setValueAt()这样的方法来操纵数据。然后,当数据被更改时,JTable将立即反映更改。
您永远不应该更改数组中的数据。 TableModel不会知道表永远不会显示更改数据的更改。
如果您需要操作JTable范围之外的数据,也就是说您不希望更改反映在表中,那么您应该扩展DefaultTableModel并创建getVolumeValues()
方法这将返回数组中TableModel的所有int值。
是否有可能通过列
将1-D数组转换为JTable列
尽管如此,您最初可以使用addColumn(...)
方法使用数组中的数据填充DefaultTableModel。数据将从Array复制到DefaultTableModel使用的Vector,因此您不应再次引用Array数据(如果您的表可编辑),因为数据可能已更改。
答案 1 :(得分:2)
我至少看到两种方法:
getValueAt(row,col)
等。)答案 2 :(得分:0)
首先,我强烈建议您遵循其他答案的建议,但可以做您要求的事情。
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class TableDataTest extends JDialog
{
public TableDataTest()
{
DefaultTableModel model = new DefaultTableModel();
model.addColumn("test1");
model.addColumn("test2");
model.addRow(new String[]{"testrow", "testrow"});
model.addRow(new String[]{"testrow2", "testrow2"});
JTable myTable = new JTable(model);
add(new JScrollPane(myTable));
}
public static void main(String args[])
{
JDialog dlg = new TableDataTest();
dlg.setSize(100, 100);
dlg.setModal(true);
dlg.setVisible(true);
dlg.dispose();
}
}