各位大神,我最近在帮办公室写程序。我现在遇到一个难题,是我有一个窗体,里面用表格输出我得到的数据结果。
但是,表格的大小无法随着窗体的变化而变化。我现在想要解决这个问题,也就是:点窗体的最大化之后,窗体JFrame变大,同时,JTable也变大,我不知道怎么实现,跪求各位大神帮忙啊!JavaJTableJFrameSwing

解决方案 »

  1.   

    在点放大时候,取得屏幕尺寸赋值给fram尺寸,取得fram尺寸-边距量给table,我就这么想得。之前在IDE小工具中也实现过类似的结构详见in
      

  2.   

    感谢楼主,我是用Myeclipse手动生成的,代码如下/*
     * CheckActypeResult.java
     *
     * Created on __DATE__, __TIME__
     */package forms;import javax.swing.table.DefaultTableModel;/**
     *
     * @author  __USER__
     */
    public class CheckActypeResult extends javax.swing.JFrame { /** Creates new form CheckActypeResult */
    public CheckActypeResult() {
    initComponents();
    } /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    //GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        String[] heads = {"页数","机型校对情况"};

            Object[][] cellData = null; 
    DefaultTableModel model = new DefaultTableModel(cellData,heads)
    {
    public boolean isCellEditable(int row,int column)
    {
    return false;
    }
    };
    jTable1 = new javax.swing.JTable(model);
    jScrollPane1.setViewportView(jTable1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
    getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(layout.createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
    Short.MAX_VALUE).addGroup(
    layout.createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING).addGroup(
    layout.createSequentialGroup().addGap(0, 0,
    Short.MAX_VALUE).addComponent(jScrollPane1,
    javax.swing.GroupLayout.PREFERRED_SIZE, 375,
    javax.swing.GroupLayout.PREFERRED_SIZE).addGap(
    0, 0, Short.MAX_VALUE))));
    layout.setVerticalGroup(layout.createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
    Short.MAX_VALUE).addGroup(
    layout.createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING).addGroup(
    layout.createSequentialGroup().addGap(0, 0,
    Short.MAX_VALUE).addComponent(jScrollPane1,
    javax.swing.GroupLayout.PREFERRED_SIZE, 275,
    javax.swing.GroupLayout.PREFERRED_SIZE).addGap(
    0, 0, Short.MAX_VALUE)))); pack();
    }// </editor-fold>
    //GEN-END:initComponents /**
     * @param args the command line arguments
     */

    public void addRow(String[] output) 
    {
    DefaultTableModel model = (DefaultTableModel) this.jTable1.getModel();
    model.addRow(output);
    }
    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables}
      

  3.   


    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                    getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(layout.createParallelGroup(
                    javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
                    Short.MAX_VALUE).addGroup(
                    layout.createParallelGroup(
                            javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                            layout.createSequentialGroup().addGap(0, 0,
                                    Short.MAX_VALUE).addComponent(jScrollPane1,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 375,
                                    javax.swing.GroupLayout.PREFERRED_SIZE).addGap(
                                    0, 0, Short.MAX_VALUE))));
            layout.setVerticalGroup(layout.createParallelGroup(
                    javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
                    Short.MAX_VALUE).addGroup(
                    layout.createParallelGroup(
                            javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                            layout.createSequentialGroup().addGap(0, 0,
                                    Short.MAX_VALUE).addComponent(jScrollPane1,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 275,
                                    javax.swing.GroupLayout.PREFERRED_SIZE).addGap(
                                    0, 0, Short.MAX_VALUE))));从你的代码看,你是把jscrollpane的大小定死了。
    方法:继承ComponentAdapter类或者实现ComponentListener接口,在componentResized方法中重新设置jscrollpane的大小,然后调用validate(),repaint()方法
      

  4.   

    不要指定大小,使用pack()
    重载getPerferenceSize()