- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 MySQL 中有一些数据,必须检索这些数据并在 JTable 中显示。我为此编写的代码如下
PreparedStatement ps = con.prepareStatement("select * from " + chosenClass
+ " where subjects=?;");
ps.setString(1, selectedGroup);
rs = ps.executeQuery();
rs.next();
subjects[0] = rs.getString("sub1");
subjects[1] = rs.getString("sub2");
subjects[2] = rs.getString("sub3");
subjects[3] = rs.getString("sub4");
subjects[4] = rs.getString("sub5");
subjects[5] = "H.V";
tableModel.setColumnIdentifiers(new Object[]{"RollNo", "Name", subjects[0], subjects[1],
subjects[2], subjects[3], subjects[4], subjects[5]});
tableModel = (DefaultTableModel) StuMarks_TBL.getModel();
//I tried this after some help from internet
String classToGet = "";
if (chosenClass.matches("class12subjects")) {
classToGet = "XII";
} else if (chosenClass.matches("class11subjects")) {
classToGet = "XI";
}
Query = "select sd.rollno, name, sub1, sub2, sub3, sub4, sub5, sub6 "
+ "from stu_details sd join stu_marks sm "
+ "where sm.rollno = sd.rollno "
+ " and sd.optionalSubject='" + selectedGroup + "' and sd.class='"
+ classToGet + "';";
rs = st.executeQuery(Query);
i = 0;
while (rs.next()) {
tableModel.addRow(new Object[]{
rs.getString("rollno"),
rs.getString("name"),
rs.getString("sub1"),
rs.getString("sub2"),
rs.getString("sub3"),
rs.getString("sub4"),
rs.getString("sub5"),
rs.getString("sub6")});
//tableModel.setValueAt(1, 1, 4);
//When this is written, i am able to see 1 row in the output and then an array index out of exception
System.out.println(rs.getString("rollno")
+ rs.getString("name")
+ rs.getString("sub1")
+ rs.getString("sub2")
+ rs.getString("sub3")
+ rs.getString("sub4")
+ rs.getString("sub5")
+ rs.getString("sub6"));
}
}
我可以使用System.out.println打印输出面板中的所有详细信息。但它没有被添加到表中。
正如您所看到的 //tableModel.setValueAt(1, 1, 4); 附近的异常,即数组索引超出范围,显示一行(第零行)。我觉得这些行正在被添加,然后以某种方式被删除。我无法弄清楚。有人可以在这方面帮助我吗?
最佳答案
我不太确定您想要完成什么,因为您的代码片段没有透露所有必要的数据。您的问题实际上是两个问题,如何向表格添加一行以及如何打印表格的内容。所附代码是我编写的一种方法,用于完成其他任务,该方法已被编辑以删除多余的 Material 并使表格通用。它将创建一个包含 5 列和 6 行数据的表,可以添加或删除行,并使用 System.out.println(….) 打印出每行所有元素的内容;作为单独的线路。我希望这个对你有用。将代码导入到 IDE 中,您可以根据需要编译、执行和编辑它。R·米切尔
导入java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
class ModelJTable extends JFrame {
/**
* This application will create a table with 5 columns (0 to 4) and 6 rows
* (0 to 5). It will allow the removal of any or all rows individually. It
* will add row(s) as determined by commenting/uncommenting code. It will
* print the contents of all of the displayed rows as individual lines.
* That is:
* line 0, column 0 (line feed) line 0, column 1 (line feed) etc. Some of
* the comments are probably not applicable and most were for my
* information when I wrote the app.
*/
/**
* class variables
*/
public DefaultTableModel model;
public JTable table;
/**
* Table rows redefined to match column names. Not required. Automatically
* appends nulls.
*/
String[] rowZero = {"R0-C0", "R0-C1", "R0-C2", "R0-C3", "R0-C4"};
String[] rowOne = {"R1-C0", "R1-C1", "R1-C2", "R1-C3", "R1-C4"};
String[] newRow; // undefined String[]
public ModelJTable() {
super();
/**
* Redefined column names.
*/
model = new DefaultTableModel();
model.addColumn("Column 0");
model.addColumn("Column 1");
model.addColumn("Column 2");
model.addColumn("Col 3");
model.addColumn("Col 4");
/**
* moved to class variable to demonstrate that the row entry can be
* defined as a class variable. String[] rowZero = {"R0-C0", "R0-C1",
* "R0-C2", "R0-C3", "R0C4"};
*/
// model.addRow(socrates);
model.addRow(rowZero);
/**
* moved to class variable to demonstrate that the row entry can be
* defined as a class variable. String[] rowOne = {"R1-C0", "R1-C1",
* "R1-C2", "R1-C3", "R1-C4"};
*/
model.addRow(rowOne);
String[] rowTwo = {"R2-C0", "R2-C1", "R2-C2", "R2-C3", "R2-C4"};
model.addRow(rowTwo);
String[] rowThree = {"R3-C0", "R3-C1", "R3-C2", "R3-C3", "R3-C4"};
model.addRow(rowThree);
String[] rowFour = {"R4-C0", "R4-C1", "R4-C2", "R4-C3", "R4-C4"};
model.addRow(rowFour);
String[] rowFive = {"R5-C0", "R5-C1", "R5-C2", "R5-C3", "R5-C4"};
model.addRow(rowFive);
/**
* emptyRow elements must be "" NOT "null" or any other string.
*/
// String[] emptyRow = {"", "", "", "", ""};
// model.addRow(emptyRow);
table = new JTable(model, (TableColumnModel) table);
TableColumn nameColumn = table.getColumnModel().getColumn(0);
nameColumn.setPreferredWidth(75);
TableColumn surNameColumn = table.getColumnModel().getColumn(1);
surNameColumn.setPreferredWidth(75);
TableColumn datesColumn = table.getColumnModel().getColumn(2);
datesColumn.setPreferredWidth(300);
TableColumn column4 = table.getColumnModel().getColumn(3);
column4.setPreferredWidth(30);
TableColumn column5 = table.getColumnModel().getColumn(4);
column5.setPreferredWidth(30);
JButton quitButton = new JButton("Quit");
quitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
JButton printTableButton = new JButton("Print Table");
printTableButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
printFile(); // go to print file method
}
});
JButton addButton = new JButton("Add Row");
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
addNewRow();
}
});
JButton removeButton = new JButton("Remove Row");
removeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
model.removeRow(table.getSelectedRow());
} catch (Exception e) {
System.out.println("Nothing selected to remove.");
}
}
});
JPanel inputPanel = new JPanel();
inputPanel.add(quitButton);
inputPanel.add(printTableButton);
inputPanel.add(addButton);
inputPanel.add(removeButton);
JPanel southernPanel = new JPanel();
Container container = getContentPane();
container.add(inputPanel, BorderLayout.SOUTH);
container.add(southernPanel, BorderLayout.NORTH);
container.add(new JScrollPane(table), BorderLayout.CENTER);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600, 600);
this.setUndecorated(true);
this.setResizable(false);
this.setLocationRelativeTo(null);
setVisible(true);
} // end of public ModelJTable() method
public void addNewRow() {
String[] addRow = {"New Row", "New Row", "New Row", "New Row",
"New Row"};
model.addRow(addRow);
}
/**
* public static void main(String args[]) { new ModelJTable(); } // end of
* main()
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ModelJTable().setVisible(true);
}
});
}
public void printFile() {
int rowCount = model.getRowCount(); // rowCount is decimal (1 to X)
int columnNumber = 0;
int rowNumber = 0;
String rowElement = "";
// System.out.println("Printing the rows of the table.");
// System.out.println("rowCount = " + rowCount);
/**
* Row numbering is zero to X. rowCount is decimal (1 to X).
*/
int elementNumber = 0; // initialize elementNumber
/**
* There are 5 elements (0 to 4) in each row. There are rowCount rows (1
* to rowCount) in the table. Therefore there are rowCount * 5 elements
* to be printed.
*/
int endOfLoop = 5 * rowCount;
//System.out.println("Number of elements in the table = " + endOfLoop);
for (int i = 0; i < endOfLoop; i++) {
System.out.println(model.getValueAt(rowNumber, elementNumber)
.toString());
if (elementNumber == 4) {
elementNumber = 0;
rowNumber++;
} else {
elementNumber++;
}
}
}
} // end of class ModelJTable
关于java - DefaultTableModel 中的 addrow 方法不添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496151/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!