Java 将JPanel设置为与其包含的JTable相同的大小
我在JFrame中包含的JPanel中包含的JScrollPane中包含了一个JTable。我使用了NetBeans GUI构建器,因此一些自动生成的代码隐藏在下面 在Java 将JPanel设置为与其包含的JTable相同的大小,java,swing,jpanel,Java,Swing,Jpanel,我在JFrame中包含的JPanel中包含的JScrollPane中包含了一个JTable。我使用了NetBeans GUI构建器,因此一些自动生成的代码隐藏在下面 在PanelWithTable.java中: public class PanelWithTable extends javax.swing.JPanel { public PanelWithTable() { initComponents(); } public JTable getTa
PanelWithTable.java
中:
public class PanelWithTable extends javax.swing.JPanel {
public PanelWithTable() {
initComponents();
}
public JTable getTable() {
return jTable1;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(jTable1.getWidth(), jTable1.getHeight());
}
...
//Generated code
...
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}
public class OuterFrame extends javax.swing.JFrame {
public OuterFrame() {
initComponents();
panelWithTable1.getTable().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for (int i = 0, n = panelWithTable1.getTable().getColumnModel().getColumnCount(); i < n; i++) {
panelWithTable1.getTable().getColumnModel().getColumn(i).setPreferredWidth(16);
}
pack();
}
public PanelWithTable getPanelWithTable() {
return panelWithTable1;
}
...
//Generated code
...
private main.PanelWithTable panelWithTable1;
}
在OuterFrame.java
中:
public class PanelWithTable extends javax.swing.JPanel {
public PanelWithTable() {
initComponents();
}
public JTable getTable() {
return jTable1;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(jTable1.getWidth(), jTable1.getHeight());
}
...
//Generated code
...
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}
public class OuterFrame extends javax.swing.JFrame {
public OuterFrame() {
initComponents();
panelWithTable1.getTable().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for (int i = 0, n = panelWithTable1.getTable().getColumnModel().getColumnCount(); i < n; i++) {
panelWithTable1.getTable().getColumnModel().getColumn(i).setPreferredWidth(16);
}
pack();
}
public PanelWithTable getPanelWithTable() {
return panelWithTable1;
}
...
//Generated code
...
private main.PanelWithTable panelWithTable1;
}
公共类OuterFrame扩展了javax.swing.JFrame{
公共外部框架(){
初始化组件();
panelWithTable1.getTable().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
对于(int i=0,n=panelWithTable1.getTable().getColumnModel().getColumnCount();i
如果我不重写getPreferredSize()
它看起来像这样:
我希望JPanel与JTable的大小相同,这样就不会显示边框。重写getPreferredSize()
时,如下所示:
它比表稍微小一点,并且它切断了最后一行和最后一列。如何正确地使JPanel与JTable的大小相同
我有一个包含在JFrame中的JPanel中的JTable
应添加到JTable
JScrollPane
- 然后在
JPanel
- 最后在
JFrame
JTable table=new JTable();
JScrollPane scrollPane=new JScrollPane(table);
JPanel panel=new JPanel();
panel.add(scrollPane);
frame.add(panel);
我有一个包含在JFrame中的JPanel中的JTable
应添加到JTable
JScrollPane
- 然后在
JPanel
- 最后在
JFrame
JTable table=new JTable();
JScrollPane scrollPane=new JScrollPane(table);
JPanel panel=new JPanel();
panel.add(scrollPane);
frame.add(panel);
JTable
内部JScrollPane
)
为JTable
设置PreferredScrollableViewportSize
,并将JPanel
的默认FlowLayout
更改为GridBagLayout
(将填充设置为GridBagConstraints.HORIZONTAL
),或最终使用BorderLayout
,将JScrollPane
放置在区域的中心
JTable
放入JPanel
)
要将JPanel
的默认FlowLayout
更改为GridBagLayout
(将fill设置为GridBagConstraints.HORIZONTAL
),或最终使用BorderLayout
,请将JTable
放在中心区域
SSCCE
/MCVE
JTable
内部JScrollPane
)
为JTable
设置PreferredScrollableViewportSize
,并将JPanel
的默认FlowLayout
更改为GridBagLayout
(将填充设置为GridBagConstraints.HORIZONTAL
),或最终使用BorderLayout
,将JScrollPane
放置在区域的中心
JTable
放入JPanel
)
要将JPanel
的默认FlowLayout
更改为GridBagLayout
(将fill设置为GridBagConstraints.HORIZONTAL
),或最终使用BorderLayout
,请将JTable
放在中心区域
SSCCE
/MCVE
由于您可以轻松地使用netbeans,因此可以将
jtable
拖动到jpanel
的各个角落。Netbeans将处理其余的内容。试试这个建议,看看那里生成的代码。然后您可以按自己的方式修改它。因为您可以轻松地使用netbeans,所以您可以将jtable
拖动到jpanel
的各个角落。Netbeans将处理其余的内容。试试这个建议,看看那里生成的代码。然后您可以按照自己的方式修改它。因为您可以轻松地使用netbeans,所以您可以将jtable拖到jpanel的各个角落。Netbeans将处理其余的问题stuffs@ThusithaThilinaDayaratne但是在我的应用程序中,表可以有不同的大小,因此大小需要基于表的行和列。因此,您可以按照自己的方式修改它。@Thusitathilinadayaratne谢谢,尝试后它现在可以工作了。@Thusitahilinadayaratne如果您将您的评论变成一个答案,我将接受它。因为您很容易使用netbeans,您可以将jtable拖到jpanel的角落。Netbeans将处理其余的问题stuffs@ThusithaThilinaDayaratne但是在我的应用程序中,表可以有不同的大小,因此大小需要基于表的行和列。因此,您可以按自己的方式修改它。@ThusithaThilinaDayaratne谢谢,尝试后它现在可以工作了。@ThusithaThilinaDayaratne如果您将您的评论变成答案,我将接受它。JTable包含在JScrollPane中,我编辑了我的问题。JTable包含在JScrollPane中,我编辑了我的问题。