java - 如何在jscrollpane中添加jtable?

标签 java jtable jscrollpane

我知道,如何在滚动 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/

相关文章:

java - 文本超出 JTextArea

Java MQEnvironment 静态属性

java - 如何使 Borderlayout 的 .CENTER 中的组件占据所有中心空间并随应用程序调整大小?

java - 如何在 Spring 4 中调试请求?

java - 删除 JTable 位的所有行,其占用空间仍然存在

java - MYSQL boolean 返回复选框,不返回tinyint

java - jtable header 中复选框的事件

java - 通过 JScrollPane 填充 JTable

java - 无法使用 Bazel 获取 Maven 依赖项 javadoc

java - 如何使用 apache poi 删除一行