向JavaSwing添加表

向JavaSwing添加表,java,swing,layout,jtable,jpanel,Java,Swing,Layout,Jtable,Jpanel,我已经有了一个面板,其中添加了按钮和文本区域。现在我需要在它下面显示一个表。面板的布局是绝对布局,如果我使用以下方法将表格充气,它将显示为空 String data[][] = { { "vinod", "BCA", "A" }, { "Raju", "MCA", "b" }, { "Ranjan", "MBA", "c" }, { "Rinku", "BCA", "d" } }; String col[] = { "Name",

我已经有了一个面板,其中添加了按钮和文本区域。现在我需要在它下面显示一个表。面板的布局是绝对布局,如果我使用以下方法将表格充气,它将显示为空

        String data[][] = { { "vinod", "BCA", "A" }, { "Raju", "MCA", "b" },
                { "Ranjan", "MBA", "c" }, { "Rinku", "BCA", "d" } };

        String col[] = { "Name", "Course", "Grade" };
        JTable table = new JTable(data, col);
        table.setLocation(25,343);
        panel.add(table, BorderLayout.CENTER);
但是,当我使用setbounds时,表显示正常,但它占用的空间比它需要的多,并且行不会显示在空白处,看起来很糟糕。是否有人知道如何只设置桌子的x、y位置,并保留其余的定位宽度和高度以适应所需

String data[][] = { { "vinod", "BCA", "A" }, { "Raju", "MCA", "b" },
        { "Ranjan", "MBA", "c" }, { "Rinku", "BCA", "d" } };

String col[] = { "Name", "Course", "Grade" };
JTable table = new JTable(data, col);
table.setBounds(25,343,122,122);
panel.add(table, BorderLayout.CENTER);
,导致重新调整大小等问题

放,不要用

阅读关于神谕的教程

一切都很重要

,导致重新调整大小等问题

放,不要用

阅读关于神谕的教程

一切都很重要


要获得干净的布局,请使用布局管理器。不应使用绝对布局。就这么简单。要有一个干净的布局,请使用布局管理器。不应使用绝对布局。就这么简单。+1,当使用滚动窗格时,还需要添加table.setPreferredScrollableViewportSizetable.getPreferredSize;因此,表格将完全符合海报对这个问题的要求。是的。table.setPreferredScrollableViewportSizetable.getPreferredSize;明确地helped@DeveloperAndroid是正确的,但值得一提的是,这种方法适用于只有几行和几列的小型JTables视图,必须测试来自PreferredScrollableViewportSize的维度,否则GUI可能会走向MilkyWay:-+1,使用滚动窗格时,还需要添加table.setPreferredScrollableViewportSizetable.getPreferredSize;因此,表格将完全符合海报对这个问题的要求。是的。table.setPreferredScrollableViewportSizetable.getPreferredSize;明确地helped@DeveloperAndroid是正确的,但值得注意的是,此方法适用于具有少量行和列的小型JTables视图,必须测试来自PreferredScrollableViewportSize的维度,否则GUI可能会出现问题:-
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
frame.add (Box.createVerticalStrut(343), BorderLayout.NORTH);
frame.add (Box.createHorizontalStrut(25), BorderLayout.WEST);
frame.add (new JTable (5, 5), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);