如何在具有空布局的 JPanel 中添加 JTable?

注:本文转自《白煮蛋的博客》 

首先,您应该认真考虑其他布局管理器,例如 BorderLayoutManager (new JPanel(new BorderLayout())) 是一个好的开始。

此外,在设计对话框时,请记住您可以并且应该嵌套布局:一个 JPanel 位于另一个 JPanel 中(例如,GridLayout 位于 BorderLayout 中)。请注意:一个“好的”对话框应该适当调整大小,这样如果用户调整您的框架大小,您希望自动扩展您的信息对象,例如您的表格,而不是显示大面积的 JPanel 背景。这是使用 NullLayout 无法实现的。

但可能有一些情况——在这个大世界的某个地方——NullLayout 就是这样。所以这里有一个例子:

<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-java"><span style="color:var(--highlight-keyword)">import</span> java.awt.Dimension;
<span style="color:var(--highlight-keyword)">import</span> javax.swing.JFrame;
<span style="color:var(--highlight-keyword)">import</span> javax.swing.JPanel;
<span style="color:var(--highlight-keyword)">import</span> javax.swing.JScrollPane;
<span style="color:var(--highlight-keyword)">import</span> javax.swing.JTable;
<span style="color:var(--highlight-keyword)">import</span> javax.swing.table.DefaultTableModel;

<span style="color:var(--highlight-keyword)">public</span> <span style="color:var(--highlight-keyword)">class</span> <span style="color:var(--highlight-literal)">JTableInNullLayout</span>
{
  <span style="color:var(--highlight-keyword)">public</span> <span style="color:var(--highlight-keyword)">static</span> <span style="color:var(--highlight-keyword)">void</span> <span style="color:var(--highlight-literal)">main</span>(String[] argv) <span style="color:var(--highlight-keyword)">throws</span> Exception {

      <span style="color:var(--highlight-namespace)">DefaultTableModel</span> <span style="color:var(--highlight-variable)">model</span> = <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">DefaultTableModel</span>(
          <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">String</span>[][] { { <span style="color:var(--highlight-variable)">"a"</span>, <span style="color:var(--highlight-variable)">"123"</span>} , {<span style="color:var(--highlight-variable)">"b"</span>, <span style="color:var(--highlight-variable)">"456"</span>} }, 
          <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">String</span>[] { <span style="color:var(--highlight-variable)">"name"</span>, <span style="color:var(--highlight-variable)">"value"</span> } );

      <span style="color:var(--highlight-namespace)">JTable</span> <span style="color:var(--highlight-variable)">t</span> = <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">JTable</span>(model);

      <span style="color:var(--highlight-namespace)">JPanel</span> <span style="color:var(--highlight-variable)">panel</span> = <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">JPanel</span>(<span style="color:var(--highlight-literal)">null</span>);

      <span style="color:var(--highlight-namespace)">JScrollPane</span> <span style="color:var(--highlight-variable)">scroll</span> = <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">JScrollPane</span>(t);
      scroll.setBounds( <span style="color:var(--highlight-namespace)">0</span>, <span style="color:var(--highlight-namespace)">20</span>, <span style="color:var(--highlight-namespace)">150</span>, <span style="color:var(--highlight-namespace)">100</span> ); <span style="color:var(--highlight-comment)">// x, y, width, height</span>
      panel.add(scroll);

      <span style="color:var(--highlight-namespace)">JFrame</span> <span style="color:var(--highlight-variable)">frame</span> = <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">JFrame</span>();
      frame.add(panel);
      frame.setPreferredSize( <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">Dimension</span>(<span style="color:var(--highlight-namespace)">200</span>,<span style="color:var(--highlight-namespace)">200</span>));
      frame.pack();
      frame.setVisible(<span style="color:var(--highlight-literal)">true</span>);
  }
}</code></span></span>
上一篇:Linux虚拟机在安装CentOS 8 配置“网络和主机名”时显示“以太网(ens160,被拔出)“解决方法


下一篇:SpringMVC_04重定向和转发