JFrame中的错误

时间:2012-12-15 00:25:20

标签: java swing jtable

我正在做一个项目,但我对Frame有一点问题,我的表有问题。

好吧,我有这个:

My frame

上一张照片的来源是:

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);
}
}

但我需要我的框架看起来像这样:

my goal

那么,你能帮助我吗,我把所有内容放在GridLayout中,但我需要最后一张表 更大...但我不知道如何组织元素放置的方式 我想......

2 个答案:

答案 0 :(得分:2)

试试这样:

  1. 而不是直接在JFrame上添加组件,而是创建单独的JPanel并添加除JScrollPane(包含JTable)和“Salir”按钮之外的所有组件。< / p>

  2. BorderLayout设置JFrame

  3. GridLayout添加组件设置JPanel,并将JPanel添加到NORTH的{​​{1}}。

    JFrame
  4. frame.add(panel, BorderLayout.NORTH); 添加到JScrollPane

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

    JPanel

    SOUTH
  6. P.S。在调用frame.add(salir, BorderLayout.SOUTH); 方法之前,不要忘记致电JPanel salirPanel = new JPanel(); salirPanel.setLayout(new FlowLayout(FlowLayout.RIGHT,3,3)); salirPanel.add(salirButton); frame.add(salirPanel); 而不是frame.pack();

    修改

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

答案 1 :(得分:1)

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

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