我知道,如何在滚动 Pane 中添加表格。但我在那里引入了一个循环,它造成了问题,所以请帮助我摆脱这个问题(我想在滚动 Pane 内添加表格),似乎只要我不引入滚动 Pane ,它就可以工作,但每当我将表格放在滚动 Pane 内时,它就不起作用。请帮忙。
提前致谢。
这是我的代码:
import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.*;
public class Simple
{
JScrollPane mainScroll;
JPanel panel;
JFrame frame;
public Simple()
{
frame=new JFrame();
panel=new JPanel();
mainScroll=new JScrollPane();
Object[][] rowData = {};
Object[] columnNames = { "Sr.No","Subject","Department","Status" };
JComboBox mainBox=new JComboBox();
mainBox.addItem("Processed");
mainBox.addItem("Pending");
DefaultTableModel listTableModel;
listTableModel = new DefaultTableModel(rowData, columnNames);
for (int i = 0; i < 1000; i++) {
String main = "" + i;
listTableModel.addRow(new Object[] { main, "", "" ,"Choose"});
JTable listTable;
listTable = new JTable(listTableModel);
TableColumn StatusColumn=listTable.getColumnModel().getColumn(3);
StatusColumn.setCellEditor(new DefaultCellEditor(mainBox));
mainScroll.add(listTable);
}
panel.setLayout(null);
mainScroll.setBounds(37, 143, 397, 183);
// mainBox.addItem("Processing");
frame.add(panel);
panel.add(mainScroll);
frame.setSize(600,600);
frame.setVisible(true);
}
public static void main(String arg[])
{
new Simple();
}
}
最佳答案
而不是
mainScroll=new JScrollPane();
...
mainScroll.add(listTable);
你需要在循环之后执行此操作
mainScroll = new JScrollPane(listTable);
附录 1:
您还需要将 JTable 的创建拉到循环之外。在循环内仅向表中添加行。
解决方案的核心是这样的:
JTable listTable = new JTable(listTableModel);
for (int i = 0; i < 1000; i++) {
// add rows to the table
}
mainScroll = new JScrollPane(listTable);
附录 2(我想我需要标识符)
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.awt.*;
import javax.swing.*;
public class Simple {
JScrollPane mainScroll;
JPanel panel;
JFrame frame;
public Simple() {
frame=new JFrame();
panel=new JPanel();
Object[][] rowData = {};
Object[] columnNames = { "Sr.No","Subject","Department","Status" };
JComboBox mainBox=new JComboBox();
mainBox.addItem("Processed");
mainBox.addItem("Pending");
DefaultTableModel listTableModel;
listTableModel = new DefaultTableModel(rowData, columnNames);
JTable listTable = new JTable(listTableModel);
for (int i = 0; i < 1000; i++) {
String main = "" + i;
listTableModel.addRow(new Object[] { main, "", "" ,"Choose"});
TableColumn StatusColumn=listTable.getColumnModel().getColumn(3);
StatusColumn.setCellEditor(new DefaultCellEditor(mainBox));
}
mainScroll = new JScrollPane(listTable);
panel.setLayout(null);
mainScroll.setBounds(37, 143, 397, 183);
frame.add(panel);
panel.add(mainScroll);
frame.setSize(600,600);
frame.setVisible(true);
}
public static void main(String arg[]) {
new Simple();
}
}
关于java - 如何在jscrollpane中添加jtable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319017/