【问题标题】:JTable not displaying in the initializationJTable 未在初始化中显示
【发布时间】:2013-08-25 18:11:53
【问题描述】:

我遇到了一个罕见的问题。 当我将代码放在按钮的事件中时,它可以工作并且表格可以正确显示,但是当我将它放在 initComponents() 函数下方(在构造函数内部)时,它不起作用。

String[] columnNames = {"Nick", "E-Mail"};
Object[][] data = {
{"Kathy", "abc@hotmail.com"},
{"John", "Doe"},
{"Sue", "Black"},
{"Jane", "White"},
{"Joe", "Brown"}

};

   jPanel1.setLayout(new BorderLayout()); 
   JTable table = new JTable(data, columnNames);
   Dimension dim = new Dimension(jPanel1.getWidth(),jPanel1.getHeight());
   JScrollPane tableScroll = new JScrollPane(table);
   tableScroll.setPreferredSize(dim);
   jPanel1.add(tableScroll, BorderLayout.CENTER);
   jPanel1.validate();

有什么想法吗?

【问题讨论】:

  • 我将 jPanel1.getWidth() 更改为一个数字,它起作用了!就像那个函数在开始时返回 0 一样。我不知道为什么
  • 你不应该设置 JScrollPane 的preferredSize,而是让你的布局管理器为你做。
  • 如果我不设置preferredSize它会填满整个屏幕!

标签: java swing jtable jpanel jscrollpane


【解决方案1】:
  • 替换Dimension dim = new Dimension(jPanel1.getWidth(),jPanel1.getHeight());

  • 因为在JFrame.pack()JFrame.setVisible(true) 之前返回零维[0, 0]


  • table.setPreferredScrollableViewportSize(table.getPreferredSize());

【讨论】:

  • 当我这样做时,滚动不起作用,我看不到整个表格。
  • 我用 table.setPreferredScrollableViewportSize(jPanel1.getPreferredSize());谢谢!
  • 如果有助于解决问题,请accept回答。
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多