java - JTable在java中的JFrame中没有完全显示

标签 java swing jtable jpanel layout-manager

我有JTable,然后我将其添加到JPanel。然后我将这个 JPanel 添加到一个名为frame的 JFrame 中。这个框架正确地显示了该表格,但是当我最大化窗口时,JPanel 仍然保持很小的尺寸。当我最大化框架时,我想在整个框架上显示 JPanel 。 这是我的代码:

import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

@SuppressWarnings("serial")
public class TestClass extends JPanel
{
    public TestClass()
    {
        Vector columnNames = new Vector();
        Vector data = new Vector();


            int columns =3;

            //  Get column names

            columnNames.addElement("Id");
            columnNames.addElement("Name");
            columnNames.addElement("Age");

            //  Get row data

            Vector row = new Vector(columns);
            row.addElement("1");
            row.addElement("Moshi");
            row.addElement("22");

            data.addElement( row );




        //  Create table with database data

        JTable table = new JTable(data, columnNames)
        {
            public Class getColumnClass(int column)
            {
                for (int row = 0; row < getRowCount(); row++)
                {
                    Object o = getValueAt(row, column);

                    if (o != null)
                    {
                        return o.getClass();
                    }
                }

                return Object.class;
            }
        };

        JScrollPane scrollPane = new JScrollPane( table );
        add(scrollPane);

    }

    public static void main(String[] args)
    {
        TestClass testClass  = new TestClass(); //**JPanel**
        JFrame frame = new JFrame();
        frame.setSize(500, 600);
        frame.getContentPane().add(testClass); //**add jpanel to frame**
        frame.setVisible(true);
    }
}

最佳答案

使用布局管理器,根据可用大小调整组件大小,而不是 JPanel 默认 FlowLayout 仅使用组件首选大小,例如

setLayout(new GridLayout());

关于java - JTable在java中的JFrame中没有完全显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602792/

相关文章:

java - 龙头改变染色粘土颜色

java - 如何通过 gov.ca.maps.tiles.TileCreator 保存图 block (图像)时减少时间?

Java Swing 执行 gFortran 代码

java - 避免 "$"被 URLEncoded

java - 代表性曝光

java - 存储过程可以返回结果集吗?

java - 使用 paintComponent() 在 JFrame 中绘制矩形

java - 如何在 Windows LookAndFeel 中更改 JTableHeader 的主色?

java - 局部变量可以和全局变量重名吗?

java - 具有多个组件的 JTable 单元格