Java 如何用基本表填充JScrollPane
我的计划是创建一个“基本”表模板,每当播放器创建一个新的播放列表时,该模板将填充JScrollPane Netbeans GUI编辑器创建如下代码: 私有组件(){ 我有我的模板: 公共类BasicTableGUI扩展了JTable{Java 如何用基本表填充JScrollPane,java,swing,Java,Swing,我的计划是创建一个“基本”表模板,每当播放器创建一个新的播放列表时,该模板将填充JScrollPane Netbeans GUI编辑器创建如下代码: 私有组件(){ 我有我的模板: 公共类BasicTableGUI扩展了JTable{ JTable table; DefaultTableModel musicTableModel; public BasicTableGUI() { String[] columns = {"Artist", "Title", "Album", "Tra
JTable table;
DefaultTableModel musicTableModel;
public BasicTableGUI() {
String[] columns = {"Artist", "Title", "Album", "Track Number", "Length"};
musicTableModel = new DefaultTableModel(columns, 15);
table = new javax.swing.JTable();
table.setModel(musicTableModel);
if (table.isEnabled()) {
System.out.println("yess");
} else {
System.out.println("nsssss");
}
table.setTransferHandler(new MusicTableHandler(musicTableModel));
table.setDragEnabled(true);
table.setDropMode(javax.swing.DropMode.ON_OR_INSERT_ROWS);
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
table.setFillsViewportHeight(true);
table.setVisible(true);
}
}
我尝试从netbeans的GUI代码中调用它,如下所示:
...
playlists.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
playlistsScrollPane.setViewportView(playlists);
musicFileTableScrollPane.setViewportView(newBasicGUI());
我得到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException:
Uncompilable source code Erroneous sym type:
javax.swing.JScrollPane.setViewportView
什么是调用此表“模板”、BasicGUI的正确方法?我是否正确创建了BasicGUI类?您不应该将JTable子类。您应该创建一个扩展AbstractTableModel的类,并实现数据调用方法。然后改为:
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
你会的
jTable1.setModel(new MyBasicTableModel());
然后,MyBasicTableModel类将保存表中显示的所有数据。您可能需要添加额外的方法,以便您的程序能够根据需要更新数据。您还必须在获得数据更新时通知侦听器,以便直观地更新表
您可以在中找到更多信息。让我们从主要问题开始。运行代码时,代码未正确编译。接下来,您将创建两个JTables,这并没有真正的帮助。就我个人而言,我会放弃使用表单编辑器,因为它会妨碍您的工作,并在一步中配置表。感谢您指出这两个表。这就是只是复制和粘贴时出错。我不认为每次用户更改播放列表时都需要重新创建表,您只需更改表中的数据即可model@MadProgrammer-我也对此提出了质疑。我想这会使GUI对不同的表实例(播放列表)更具响应性在内存中,而不是更改模型。对我来说,似乎用信息重新加载表会导致打嗝或暂停。再说一次-这是我的第一个swing/GUI项目,因此,我不是从一个非常有见识的角度来看的。这样看……无论如何,你都必须重新绘制屏幕。
JTable
已经优化为绘制(合理地)很快,一般来说,它会在容器层次结构中造成较少的破坏,然后切换物理表。此外,除非我们讨论了成千上万行,否则我怀疑您是否会注意到差异……我不会说“从不”,但您应该有很好的理由这样做,但在这种情况下,可以使用工厂方法将JTable的实例配置为所需状态…只是说;)我想您永远不应该说从不。:)
jTable1.setModel(new MyBasicTableModel());