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. 而不是直接添加组件JFrame创建单独JPanel并添加除JScrollPane(包含JTable)和“Salir”按钮之外的所有组件。

  2. BorderLayout您的JFrame.

  3. 设置GridLayoutJPanel添加组件并将其添加JPanelNORTHof JFrame

    frame.add(panel, BorderLayout.NORTH);
    
  4. 添加JScrollPaneCENTER您的JFrame

    frame.add(scrollPane, BorderLayout.CENTER);
    
  5. 您可以将“Salir”按钮直接添加到SOUTH框架中,也可以再创建一个JPanel添加“Salir”按钮,JPanel最后添加JPanelSOUTH框架中:

    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();方法!

编辑

考虑为您的上层组件使用一些其他布局,例如GridBagLayoutMiG Layout而不是 GridLayout。

于 2012-12-15T00:56:43.307 回答
1

我会尝试使用带有 GUI 编辑器的 NetBeans IDE。使用默认的免费设计布局而不是 GridBagLayout。

对于 eclipse 也应该有一个插件。

于 2012-12-15T00:47:58.653 回答