为了账号安全,请及时绑定邮箱和手机立即绑定

使用 JTable 会导致应用程序的其余部分加载不正确

使用 JTable 会导致应用程序的其余部分加载不正确

慕桂英546537 2022-08-17 15:34:11
首先,这是针对学校项目的,所以我无法上传我的完整代码。我们得到了一个空白项目,并被要求为其添加功能。我希望能够在各种表格中显示来自服务器的数据,每个表格都在一个单独的选项卡中,每个“页面”都可以选择向表格中添加,编辑或删除记录。由于我有很多不同的表,所以我写了一个父类Page,它将包含一个表和一些JPanels,如果需要,我可以向其中添加按钮。但是,每当我尝试将JTable添加到Page时,它都会在选项卡之间导致不可预测的行为 - 请注意,无论我是否使用TableModel,都会发生这种情况。我尝试使用标签来显示组件应该在的位置,这工作正常,但是使用实际的表格会导致占位符标签和顶部的选项卡被隐藏。带有标签的选项卡,用于说明组件应位于何处我尝试添加JTable后的选项卡 - 其余的代码(包括其他占位符标签)是相同的我没有对线程做任何事情,所以当我尝试添加我的JTable时,我不知道应用程序发生了什么。这是 Page.java 的代码:我使用以下代码将新页面添加到我的选项卡系统:JTabbedPane tabs = new JTabbedPane();tabs.add("A", new Page(new String[]{"A"}));tabs.add("B", new Page(new String[]{"B"}));tabs.add("C", new Page(new String[]{"C"}));tabs.add("D", new Page(new String[]{"D"}));String[] 是我要显示的列的名称 - 请注意,一旦我让表正常工作,这些列将被替换为实际有用的名称。任何想法我做错了什么?我尝试过使用ChangeListener事件重新绘制我的框架,但这似乎没有任何作用。谢谢!编辑其中包括代码的完整版本。对 Page 使用上面的代码,并在 Main 类中使用它:import java.awt.*;import javax.swing.*;public class Main {    public static void main(String[] args) {        JFrame window = new JFrame("Components and Containers");        window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE) ;        window.setSize(800,600);        Container pane = window.getContentPane();        JTabbedPane tabs = new JTabbedPane();        tabs.add("A", new Page(new String[]{"A"}));        tabs.add("B", new Page(new String[]{"B"}));        tabs.add("C", new Page(new String[]{"C"}));        tabs.add("D", new Page(new String[]{"D"}));        pane.add(tabs);        window.setVisible(true);    }}我尝试将表格添加到滚动面板,只有当您将鼠标悬停在其上时,表格才会变得可见。选项卡仍未正确显示。将表添加到单独的 ScrollPanel 而不是直接添加到组件的结果。
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您的表模型类在行/列排序方面不一致。

在构造函数中,您编写

data=new Object[names.length][0];

这意味着第一个索引是列号,第二个索引是行号。

但是,在访问数据(在 中 ,)时,您可以以另一种方式使用 indizes:getValueAtsetValueAt

data[rowIndex][columnIndex]

还有,这个:

public int getRowCount() {
    return data.length;
}

将列计数返回为行计数,这意味着只要 JTable 尝试调用 ,您就会得到 一个。ArrayIndexOutOfBoundsExceptiongetValueAt(0, 0)


若要解决此问题,应使用以下命令初始化构造函数中的数据数组:

data=new Object[0][names.length];


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信