首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTable in JDialog

JTable in JDialog
EN

Stack Overflow用户
提问于 2016-01-05 17:25:57
回答 2查看 3K关注 0票数 1

我对JTable在JDialog中的使用有问题。我想用下面的代码在对话框中显示我的表:

代码语言:javascript
复制
 public class ShortcutKeys extends JDialog {
  public ShortcutKeys( JFrame parent ) {
    super( parent );
    this.setTitle( "Shortcut Keys of..." );
    this.setLocationRelativeTo( null );
    this.setModal( true );
    this.setResizable( false );
    this.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
    this.getContentPane().setLayout( new BorderLayout() );

    JTable shortcutKeysTable = getShortcutKeysTable();
    this.add( shortcutKeysTable, BorderLayout.CENTER );

    this.pack();
  }

  private JTable getShortcutKeysTable() {
    JTable shortcutKeysTable;

    Object rowData[][] = { { "1", "11" }, { "2", "22"} };
    Object columnNames[] = { "Column One", "Column Two" };

    shortcutKeysTable = new JTable(rowData, columnNames);
    JScrollPane scrollPane = new JScrollPane(shortcutKeysTable);

    this.add(scrollPane, BorderLayout.CENTER);
    this.setSize(300, 150);

    return shortcutKeysTable;
  }

}

因此,问题在于,使用此代码时,不会只显示列名--只显示没有我大小的行数据,结果是在小表中,而不是我的偏好。但是,当在方法或构造函数中添加以下行时:

代码语言:javascript
复制
this.setVisible( true );

然后,这个表显示了大小为300x150的行数据和列,但是当我单击“确定”退出'X‘时,这个对话框当然消失了,但是显示了新的空对话框:

http://i.imgur.com/SzkF5iK.png

我做错了什么,如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-05 17:35:41

必须添加到对话框中的是scollPane,它本身包含表。不是桌子本身。

您应该决定getShortcutKeysTable()做什么:

  • 或者创建一个表,一个scrollPane,并将scollPane添加到对话框中(并且应该重构到void createAndAddTable())。
  • 或者,它只是创建一个表并返回它,调用方负责将它包装到一个拼贴板中,并将滚动窗格添加到对话框中。

将这两种职责混合在一起会使代码变得混乱,甚至对于编写代码的人来说也是如此。

在任何wase中,设置对话框的大小都不是它的责任,而且它是不必要的,因为您无论如何都要调用pack()。

票数 3
EN

Stack Overflow用户

发布于 2016-01-05 17:37:48

您需要调用JDialog.setVisible(true);来显示对话框。

但是您的代码中有一个错误:将表放在滚动窗格中,并将滚动窗格添加到对话框(在方法getShortcutKeysTable中),然后再次将表添加到对话框中(在构造函数中)。

如果在构造函数中运行,则代码运行良好。

代码语言:javascript
复制
    ...
    getShortcutKeysTable();

    this.pack();
    this.setVisible(true);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34617692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档