- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 JTable,其中填充了各种数组列表,这些数组列表使用“~”进行分割从文本列表中获取数据。我遇到的问题是该表在一行上显示列表中的所有数据。例如:
Column1 Column2 Column2 Column2 Column3 Column4
1,2,3,4,5 1,2,3,4,5 1,2,3,4,5 1,2,3,4,5 1,2,3,4,5 1,2,3,4,5
When I want it to display
Column1 Column2 Column2 Column2 Column3 Column4
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
你明白了。根据之前的建议,我认为问题可能是循环的,但我不确定。
任何建议都会很棒。
代码如下:
private void table(){
String[] colName = { "Course", "Examiner", "Moderator", "Semester Available ", "Associated Programs", "Associated Majors"};
DefaultTableModel model = new DefaultTableModel(colName,0);
for(Object item : courseList){
Object[] row = new Object[6];
// String[] row = new String[6];
row[0] = fileManage.getCourseList();
row[1] = fileManage.getNameList();
row[2] = fileManage.getModeratorList();
row[3] = fileManage.getSemesterList();
row[4] = fileManage.getProgramList();
row[5] = fileManage.getMajorList();
model.addRow(row);
textArea = new JTable(model);
}
这是具有数组列表的类:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
public class FileIOManagement {
private ArrayList<String> nameList = new ArrayList<String>();
private ArrayList<String> courseList = new ArrayList<String>();
private ArrayList<String> semesterList = new ArrayList<String>();
private ArrayList<String> moderatorList = new ArrayList<String>();
private ArrayList<String> programList = new ArrayList<String>();
private ArrayList<String> majorList = new ArrayList<String>();
public ArrayList<String> getNameList(){
return this.nameList;
}
public ArrayList<String> getCourseList(){
return this.courseList;
}
public ArrayList<String> getSemesterList(){
return this.semesterList;
}
public ArrayList<String> getModeratorList(){
return this.moderatorList;
}
public ArrayList<String> getProgramList(){
return this.programList;
}
public ArrayList<String> getMajorList(){
return this.majorList;
}
public void setNameList(ArrayList<String> nameList){
this.nameList = nameList;
}
public void setCourseList(ArrayList<String> courseList){
this.courseList = courseList;
}
public void setSemesterList(ArrayList<String> semesterList){
this.semesterList = semesterList;
}
public void setModeratorList(ArrayList<String> moderatorList){
this.moderatorList = moderatorList;
}
public void setProgramList(ArrayList<String> programList){
this.programList = programList;
}
public void setMajorList(ArrayList<String> majorList){
this.majorList = majorList;
}
public FileIOManagement(){
setNameList(new ArrayList<String>());
setCourseList(new ArrayList<String>());
setSemesterList(new ArrayList<String>());
setModeratorList(new ArrayList<String>());
setProgramList(new ArrayList<String>());
setMajorList(new ArrayList<String>());
readTextFile();
getNameList();
getCourseList();
}
private void readTextFile(){
try{
Scanner scan = new Scanner(new File("Course.txt"));
while(scan.hasNextLine()){
String line = scan.nextLine();
String[] tokens = line.split("~");
String course = tokens[0].trim();
String examiner = tokens[1].trim();
String moderator = tokens[2].trim();
String semester = tokens[3].trim();
String program = tokens[4].trim();
String major = tokens[5].trim();
courseList.add(course);
semesterList.add(semester);
nameList.add(examiner);
moderatorList.add(moderator);
programList.add(program);
majorList.add(major);
HashSet hs = new HashSet();
hs.addAll(nameList);
nameList.clear();
nameList.addAll(hs);
Collections.sort(nameList);
}
scan.close();
}
catch (FileNotFoundException e){
e.printStackTrace();
}
}
}
这是我需要 JTable 的类:
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
public class AllDataGUI extends JFrame{
private JButton saveCloseBtn = new JButton("Save Changes and Close");
private JButton closeButton = new JButton("Exit Without Saving");
private JFrame frame=new JFrame("Viewing All Program Details");
private final FileIOManagement fileManage = new FileIOManagement();
private ArrayList<String> nameList = new ArrayList();
private ArrayList<String> courseList = new ArrayList();
private ArrayList<String> semesterList = new ArrayList();
private ArrayList<String> moderatorList = new ArrayList();
private ArrayList<String> majorList = new ArrayList();
private ArrayList<String> programList = new ArrayList();
private JTable textArea;
public ArrayList<String> getNameList(){
return this.nameList;
}
public ArrayList<String> getCourseList(){
return this.courseList;
}
public ArrayList<String> getSemesterList(){
return this.semesterList;
}
public ArrayList<String> getModeratorList(){
return this.moderatorList;
}
public ArrayList<String> getProgramList(){
return this.programList;
}
public ArrayList<String> getMajorList(){
return this.majorList;
}
public void setNameList(ArrayList<String> nameList){
this.nameList = nameList;
}
public void setCourseList(ArrayList<String> courseList){
this.courseList = courseList;
}
public void setSemesterList(ArrayList<String> semesterList){
this.semesterList = semesterList;
}
public void setModeratorList(ArrayList<String> moderatorList){
this.moderatorList = moderatorList;
}
public void setProgramList(ArrayList<String> programList){
this.programList = programList;
}
public void setMajorList(ArrayList<String> majorList){
this.majorList = majorList;
}
public AllDataGUI(){
getData();
table();
panels();
}
public Object getValueAt(int rowIndex, int columnIndex) {
String[] token = nameList.get(rowIndex).split(",");
return token[columnIndex];
}
private void table(){
String[] colName = { "Course", "Examiner", "Moderator", "Semester Available ", "Associated Programs", "Associated Majors"};
DefaultTableModel model = new DefaultTableModel(colName,0);
for(Object item : courseList){
Object[] row = new Object[6];
// String[] row = new String[6];
row[0] = fileManage.getCourseList();
row[1] = fileManage.getNameList();
row[2] = fileManage.getModeratorList();
row[3] = fileManage.getSemesterList();
row[4] = fileManage.getProgramList();
row[5] = fileManage.getMajorList();
model.addRow(row);
textArea = new JTable(model);
// String END_OF_LINE = ",";
//
// String[] colName = { "Course", "Examiner", "Moderator", "Semester Available ", "Associated Programs", "Associated Majors"};
//// textArea.getTableHeader().setBackground(Color.WHITE);
//// textArea.getTableHeader().setForeground(Color.BLUE);
// // Font Tablefont = new Font("Details", Font.BOLD, 12);
// // textArea.getTableHeader().setFont(Tablefont);
// Object[][] object = new Object[100][100];
// int i = 0;
// if (fileManage.size() != 0) {
// for (fileManage book : fileManage) {
// object[i][0] = fileManage.getCourseList();
// object[i][1] = fileManage.getNameList();
// object[i][2] = fileManage.getModeratorList();
// object[i][3] = fileManage.getSemesterList();
// object[i][4] = fileManage.getProgramList();
// object[i][5] = fileManage.getMajorList();
//
// textArea = new JTable(object, colName);
// }
// }
}
}
public void getData(){
nameList = fileManage.getNameList();
courseList = fileManage.getCourseList();
semesterList = fileManage.getSemesterList();
moderatorList = fileManage.getModeratorList();
majorList = fileManage.getMajorList();
programList = fileManage.getProgramList();
// textArea.(write());
}
private JButton getCloseButton(){
return closeButton;
}
private void panels(){
JPanel panel = new JPanel(new GridLayout(1,1));
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10));
rightPanel.setBorder(new EmptyBorder(15, 5, 5, 10));
JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(scrollBarForTextArea);
frame.add(panel);
frame.getContentPane().add(rightPanel,BorderLayout.EAST);
rightPanel.add(saveCloseBtn);
rightPanel.add(closeButton);
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
saveCloseBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//saveBtn();
frame.dispose();
}
});
frame.setSize(1000, 700);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
}
// private void saveBtn(){
// File file = null;
// FileWriter out=null;
// try {
// file = new File("Course.txt");
// out = new FileWriter(file);
// out.write(textArea.getText());
// out.close();
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }
// JOptionPane.showMessageDialog(this, "File Successfully Updated");
//
// }
}
最佳答案
可能有几种方法可以实现这一点,对我来说,我会从创建自己的 TableModel
开始,这将允许我控制数据添加到其中和管理的方式。
例如
public class ColumnBasedTableModel extends AbstractTableModel {
private Map<String, List<String>> columnData;
private List<String> columnNames;
public ColumnBasedTableModel() {
columnData = new HashMap<>(25);
columnNames = new ArrayList<>(25);
}
public void addColumn(String name, String... data) {
columnNames.add(name);
List<String> colData = columnData.get(name);
if (colData == null) {
colData = new ArrayList<>(26);
columnData.put(name, colData);
}
colData.addAll(Arrays.asList(data));
}
@Override
public int getRowCount() {
int rows = 0;
for (List<String> data : columnData.values()) {
rows = Math.max(data.size(), rows);
}
return rows;
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int column) {
return columnNames.get(column);
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object value = null;
String name = getColumnName(columnIndex);
List<String> data = columnData.get(name);
if (data != null) {
if (rowIndex < data.size()) {
value = data.get(rowIndex);
}
}
return value;
}
}
这个简单的模型在 Map
中维护列数据,并以列名称为键。 Map
值中的每个元素都是列中的一行...
可运行的示例...
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.AbstractTableModel;
public class SimpleTableExample {
public static void main(String[] args) {
new SimpleTableExample();
}
public SimpleTableExample() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
ColumnBasedTableModel model = new ColumnBasedTableModel();
model.addColumn("Column 1", createColumn(1, 5));
model.addColumn("Column 2", createColumn(6, 9));
model.addColumn("Column 3", createColumn(11, 3));
model.addColumn("Column 4", createColumn(16, 8));
model.addColumn("Column 5", createColumn(21, 15));
model.addColumn("Column 6", createColumn(26, 7));
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(new JTable(model)));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected String[] createColumn(int startAt, int count) {
String[] values = new String[count];
for (int index = 0; index < count; index++) {
values[index] = Integer.toString(startAt + index);
}
return values;
}
public class ColumnBasedTableModel extends AbstractTableModel {
private Map<String, List<String>> columnData;
private List<String> columnNames;
public ColumnBasedTableModel() {
columnData = new HashMap<>(25);
columnNames = new ArrayList<>(25);
}
public void addColumn(String name, String... data) {
columnNames.add(name);
List<String> colData = columnData.get(name);
if (colData == null) {
colData = new ArrayList<>(26);
columnData.put(name, colData);
}
colData.addAll(Arrays.asList(data));
}
@Override
public int getRowCount() {
int rows = 0;
for (List<String> data : columnData.values()) {
rows = Math.max(data.size(), rows);
}
return rows;
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int column) {
return columnNames.get(column);
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object value = null;
String name = getColumnName(columnIndex);
List<String> data = columnData.get(name);
if (data != null) {
if (rowIndex < data.size()) {
value = data.get(rowIndex);
}
}
return value;
}
}
}
FileIOManagement
TableModel
示例
public class FileIOTableModel extends AbstractTableModel {
public static final String[] COLUMN_NAMES = {
"Course",
"Name",
"Moderator",
"Semester",
"Program",
"Major",};
private FileIOManagement manager;
public FileIOTableModel(FileIOManagement manager) {
this.manager = manager;
}
@Override
public int getRowCount() {
int row = manager.getCourseList().size();
row = Math.max(row, manager.getMajorList().size());
row = Math.max(row, manager.getModeratorList().size());
row = Math.max(row, manager.getNameList().size());
row = Math.max(row, manager.getProgramList().size());
row = Math.max(row, manager.getSemesterList().size());
return row;
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public String getColumnName(int column) {
return COLUMN_NAMES[column];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
List<String> data = null;
switch (columnIndex) {
case 0:
data = manager.getCourseList();
break;
case 1:
data = manager.getNameList();
break;
case 2:
data = manager.getModeratorList();
break;
case 3:
data = manager.getSemesterList();
break;
case 4:
data = manager.getProgramList();
break;
case 5:
data = manager.getMajorList();
break;
}
Object value = null;
if (data != null) {
if (rowIndex < data.size()) {
value = data.get(rowIndex);
}
}
return value;
}
}
关于java - 将 6 个 ArrayList 中的数据存入单个 JTable - Java Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103569/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!