首先,这是针对学校项目的,所以我无法上传我的完整代码。我们得到了一个空白项目,并被要求为其添加功能。我希望能够在各种表格中显示来自服务器的数据,每个表格都在一个单独的选项卡中,每个“页面”都可以选择向表格中添加,编辑或删除记录。由于我有很多不同的表,所以我写了一个父类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:getValueAt
setValueAt
data[rowIndex][columnIndex]
还有,这个:
public int getRowCount() { return data.length; }
将列计数返回为行计数,这意味着只要 JTable 尝试调用 ,您就会得到 一个。ArrayIndexOutOfBoundsException
getValueAt(0, 0)
若要解决此问题,应使用以下命令初始化构造函数中的数据数组:
data=new Object[0][names.length];
添加回答
举报
0/150
提交
取消