java 怎样向jtable中插入数组型的数据_Java - 使用链接列表从AbstractTableModel向JTable添加数据...

本文介绍了如何在Java中使用LinkedList存储数据,并通过继承AbstractTableModel将这些数据填充到JTable中。示例代码展示了一个名为GUI_g的类,它创建了一个JTable实例并使用ProgramTableModel,该模型从LinkedList中获取数据。
摘要由CSDN通过智能技术生成

我有一个GUI,其中有一个名为'listTable'的JTable的容器。我想用存储在链表中的数据填充JTable,使用AbstractTableModel。

基本上,我有一个LinkedList存储在Processing.java中。它包含从文本文件中检索的所有数据。我创建了一个AbstractTableModel来告诉JTable如何填充。我现在想要做的就是在GUI_g中用“链接列表的内容”来填充JTable。

任何人都可以告诉我该怎么做?

代码如下:

GUI_g:

import java.awt.*;

import javax.swing.*;

import javax.swing.JTable;

public class GUI_g extends JFrame {

public void buildGui() {

JFrame frame = new JFrame("Hotel TV Scheduler");

JPanel mainPanel = new JPanel();

mainPanel.setLayout(new BorderLayout(0,0));

JPanel chPanel = new JPanel();

chPanel.setLayout(new GridLayout(3,1));

JPanel listPanel = new JPanel();

listPanel.setLayout(new GridLayout(3,2,1,0));

JPanel infoPanel = new JPanel();

infoPanel.setLayout(new GridLayout(0,3, 1, 0));

JPanel addPanel = new JPanel();

addPanel.setLayout(new GridLayout(0,3));

JPanel chlblPanel = new JPanel();

chlblPanel.setLayout(new GridLayout(1,2));

JPanel tablePanel = new JPanel();

tablePanel.setLayout(new GridLayout(1,2));

JPanel rmvbtnPanel = new JPanel();

rmvbtnPanel.setLayout(new GridLayout(1,2));

JPanel centrePanel = new JPanel();

centrePanel.setLayout(new GridLayout(0,3));

// mainPanel.add(chPanel, BorderLayout.WEST);

// mainPanel.add(listPanel, BorderLayout.EAST);

mainPanel.add(centrePanel, BorderLayout.CENTER);

JTable chOneTable = new JTable();

JTable chTwoTable = new JTable();

JTable listTable = new JTable(new ProgramTableMode());

JLabel ch1Label = new JLabel("Channel 1");

JLabel ch2Label = new JLabel("Channel 2");

JLabel listLabel = new JLabel("List");

JButton rmvChOneButton = new JButton("Remove Channel");

JButton rmvChTwoButton = new JButton("Remove Channel");

chlblPanel.add(ch1Label);

chlblPanel.add(ch2Label);

tablePanel.add(chOneTable);

tablePanel.add(chTwoTable);

rmvbtnPanel.add(rmvChOneButton);

rmvbtnPanel.add(rmvChTwoButton);

chPanel.add(chlblPanel);

chPanel.add(tablePanel);

chPanel.add(rmvbtnPanel);

listPanel.add(listLabel);

listPanel.add(listTable);

JLabel titleLabel = new JLabel("Title");

JLabel genreLabel = new JLabel("Genre");

JLabel durationLabel = new JLabel("Duration");

JLabel actorLabel = new JLabel("Actor");

JLabel directorLabel = new JLabel("Director");

JLabel rentableLabel = new JLabel("Rentable");

JLabel synLabel = new JLabel("Synopsis");

JTextField txtTitle = new JTextField();

JTextField txtGenre = new JTextField();

JTextField txtDuration = new JTextField();

JTextField txtActor = new JTextField();

JTextField txtDirector = new JTextField();

JTextField txtSynopsis = new JTextField();

JCheckBox rentCB = new JCheckBox();

JButton btnAddProg = new JButton("Add Program");

JList channelList = new JList();

JList timeList = new JList();

infoPanel.add(titleLabel);

infoPanel.add(txtTitle);

infoPanel.add(new JLabel(" "));

infoPanel.add(genreLabel);

infoPanel.add(txtGenre);

infoPanel.add(new JLabel(" "));

infoPanel.add(durationLabel);

infoPanel.add(txtDuration);

infoPanel.add(new JLabel(" "));

infoPanel.add(actorLabel);

infoPanel.add(txtActor);

infoPanel.add(new JLabel(" "));

infoPanel.add(directorLabel);

infoPanel.add(txtDirector);

infoPanel.add(new JLabel(" "));

infoPanel.add(rentableLabel);

infoPanel.add(rentCB);

infoPanel.add(new JLabel(" "));

infoPanel.add(synLabel);

infoPanel.add(txtSynopsis);

infoPanel.add(new JLabel(" "));

infoPanel.add(btnAddProg);

infoPanel.add(channelList);

infoPanel.add(timeList);

centrePanel.add(chPanel);

centrePanel.add(infoPanel);

centrePanel.add(listPanel);

frame.add(mainPanel);

frame.setVisible(true);

}

}ProgramTableModel:

import java.util.List;

import javax.swing.table.AbstractTableModel;

public class ProgramTableModel extends AbstractTableModel{

protected String[] columnNames = {"Type","Title","Length"};

private List data;

public ProgramTableModel (List data){

this.data = data;

}

public int getColumnCount() {

return 3;

}

public int getRowCount() {

return data.size();

}

public String getColumnName(int column) {

return columnNames[column];

}

public Object getValueAt(int row, int column) {

switch (column){

case 0: return data.get(row).getCategory();

case 1: return data.get(row).getTitle();

case 2: return data.get(row).getDuration();

default: return "N/A";

}

}

}处理:

import java.io.*;

import java.util.*;

public class Processing

{

List schedule = new LinkedList();

public void readAllData() {

try{

FileInputStream fstream = new FileInputStream("file.txt");

DataInputStream in = new DataInputStream(fstream);

BufferedReader br = new BufferedReader(new InputStreamReader(in));

String tempString = null;

while ((tempString = br.readLine()) != null) {

String[] row = tempString.split("-");

if(row[0].compareTo("COMEDY") == 0) {

Comedy comedy = new Comedy(row[0], row[1], Integer.parseInt(row[2]), row[3], row[4], Boolean.parseBoolean(row[5]));

schedule.add(comedy);

}

else if(row[0].compareTo("DRAMA") == 0) {

Drama drama = new Drama(row[0], row[1], Integer.parseInt(row[2]), row[3], row[4], Boolean.parseBoolean(row[5]));

schedule.add(drama);

}

else if(row[0].compareTo("MUSIC") == 0) {

MusicVideo music = new MusicVideo(row[0], row[1], Integer.parseInt(row[2]));

schedule.add(music);

}

else if(row[0].compareTo("HOTEL") == 0) {

HotelInfo hotel = new HotelInfo(row[0], row[1], Integer.parseInt(row[2]));

schedule.add(hotel);

}

}

in.close();

}

catch (Exception e){

System.err.println("Error: " + e.getMessage());

}

}

public void getAll()

{

for (Program p: schedule)

{

System.out.println(p.getTitle() + p.getDuration() + p.getCategory() + p);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值