我正在做一个项目,但我对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);
}
}
但我需要我的框架看起来像这样:
那么,你能帮助我吗,我把所有内容放在GridLayout中,但我需要最后一张表 更大...但我不知道如何组织元素放置的方式 我想......
答案 0 :(得分:2)
试试这样:
而不是直接在JFrame
上添加组件,而是创建单独的JPanel
并添加除JScrollPane
(包含JTable
)和“Salir”按钮之外的所有组件。< / p>
为BorderLayout
设置JFrame
。
为GridLayout
添加组件设置JPanel
,并将JPanel
添加到NORTH
的{{1}}。
JFrame
将frame.add(panel, BorderLayout.NORTH);
添加到JScrollPane
CENTER
JFrame
您可以将“Salir”按钮直接添加到框架的frame.add(scrollPane, BorderLayout.CENTER);
,也可以再创建一个SOUTH
添加“Salir”按钮JPanel
,最后添加{ {1}}到JPanel
框架:
JPanel
或
SOUTH
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();
!
修改强>
考虑为您的上层组件使用其他布局,例如GridBagLayout 或MiG Layout而不是GridLayout。
答案 1 :(得分:1)
我会试试NetBeans IDE及其GUI编辑器。使用默认的免费设计布局而不是GridBagLayout。
对于eclipse,也应该有一个插件。