1

プロジェクトを行っていますが、フレームに少し問題があり、テーブルに問題があります。

まあ、私はこれを持っています:

私のフレーム

前の写真のソースは次のとおりです。

public class Geotools04 extends JFrame {
private JMapFrame mapFrame;
static StyleFactory styleFactory = CommonFactoryFinder.getStyleFactory(null);
static FilterFactory filterFactory = CommonFactoryFinder.getFilterFactory(null);

Geotools04(File[] files) throws IOException, CQLException {


        FileDataStore store = FileDataStoreFinder.getDataStore(files[0]);
        SimpleFeatureSource featureSource = store.getFeatureSource();

        Filter filter = CQL.toFilter("MAN_COD = '01'");
        SimpleFeatureCollection features = featureSource.getFeatures(filter);
        FeatureCollectionTableModel model = new FeatureCollectionTableModel(features);


        for(int i=0;i<model.getColumnCount();i++){
            System.out.println(model.getColumnName(i));
        }

        JFrame frame = new JFrame();


        JTable table = new JTable();

        frame.setLayout(new GridLayout(6, 2)) ;

        JLabel a = new JLabel("Capas existentes:");

        JComboBox layer = new JComboBox();
        for(int i=0; i < files.length ; i++){
            layer.addItem(files[i].getName());    
        }

        JLabel c = new JLabel("Atributos de capa:");

        JComboBox d = new JComboBox();
        d.addItem ("MAN_COD");

        JCheckBox e = new JCheckBox("Where");
        JTextField f = new JTextField("= '01'");
        JCheckBox g = new JCheckBox("Where igual");

        JTextField h = new JTextField("01");
        h.setEditable(false);

        JCheckBox i = new JCheckBox("Todos los registros");
        JButton j = new JButton("Consultar");

        frame.add(a);
        frame.add(layer);
        frame.add(c);
        frame.add(d);
        frame.add(e);
        frame.add(f);
        frame.add(g);
        frame.add(h);
        frame.add(i);
        frame.add(j);

        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setModel(new DefaultTableModel(5, 5));
        table.setPreferredScrollableViewportSize(new Dimension(500, 200));
        JScrollPane scrollPane = new JScrollPane(table);
        table.setModel(model);
        frame.add(scrollPane);

        frame.setSize(600, 600);
        frame.setVisible(true);
}
}

しかし、私のフレームは次のようになっている必要があります。

私の目標

だから、私を助けてくれませんか、私はすべてをGridLayoutに入れますが、最後のテーブルを大きくする必要があります...しかし、私が望む方法で配置するための要素を整理する方法がわかりません...

4

2 に答える 2

2

このようにしてみてください:

  1. コンポーネントを作成時に直接追加する代わりに、(を含む) と「Salir」ボタンを除くすべてのコンポーネントをJFrame個別に追加します。JPanelJScrollPaneJTable

  2. に設定BorderLayoutしますJFrame

  3. GridLayoutそのJPaneladd コンポーネントに設定し、それJPanelNORTHof に追加しJFrameます。

    frame.add(panel, BorderLayout.NORTH);
    
  4. あなたのJScrollPaneに追加CENTERJFrame

    frame.add(scrollPane, BorderLayout.CENTER);
    
  5. SOUTH「Salir」ボタンをof フレームに直接追加するか、「Salir」ボタンをもう 1 つ作成JPanelしてJPanel、最後に of フレームに追加JPanelするSOUTHことができます。

    frame.add(salir, BorderLayout.SOUTH);
    

    また

    JPanel salirPanel = new JPanel();
    salirPanel.setLayout(new FlowLayout(FlowLayout.RIGHT,3,3));
    salirPanel.add(salirButton);
    frame.add(salirPanel);
    

PSメソッドを呼び出す前に呼び出すframe.pack();ことを忘れないでください!frame.setSize();frame.setVisible();

編集

GridLayout の代わりにGridBagLayoutMiG Layoutなど、上部コンポーネントに他のレイアウトを使用することを検討してください。

于 2012-12-15T00:56:43.307 に答える
1

GUI エディタを備えた NetBeans IDE を試してみます。GridBagLayout の代わりに、デフォルトのフリー デザイン レイアウトを使用します。

日食の場合、プラグインも必要です。

于 2012-12-15T00:47:58.653 に答える