请教各位用Openlayers+geoserver怎么实现这种效果

2025-02-25 15:22:47
推荐回答(1个)
回答1:

第一种方法 ,真要用panel的话,只能自己去画字和线了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class MyFrame extends JFrame{
JPanel panel=new JPanel();
MyPanel myPanel=new MyPanel();
JButton button=new JButton("add");
JTextField itemField=new JTextField("测式");
MyFrame(){
BorderLayout layout=new BorderLayout();
panel.setLayout(layout);
panel.add(myPanel,BorderLayout.CENTER);
panel.add(itemField,BorderLayout.EAST);
this.setBounds(0, 0, 640, 480);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.add(panel,BorderLayout.CENTER);
this.add(button,BorderLayout.EAST);
this.setVisible(true);
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
myPanel.addItem(itemField.getText());
}
});
}
public static void main(String[] args) {
new MyFrame().setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class MyPanel extends JPanel{
int rowHeight=25;
int fontSize=20;
List itemList=new ArrayList();
public void addItem(String item){
itemList.add(item);
updateUI();
}
private void printItemList(Graphics g){
for(int i=0;ig.drawString(itemList.get(i), 0, rowHeight*(i+1));
g.drawLine(0, rowHeight*(i+1)+5, 100, rowHeight*(i+1)+5);
g.drawLine(100, rowHeight*i+5, 100, rowHeight*(i+1)+5);
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Color color=g.getColor();
g.setColor(Color.BLACK);
printItemList(g);
g.setColor(color);
}
}
第二种方法,用现成的控件JTable代替嵌的panel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class MyFrame extends JFrame{
DefaultTableModel dtm=new DefaultTableModel();
MyFrame(){
JButton button=new JButton("add");
JPanel panel=new JPanel();
JTable table=new JTable(dtm);
dtm.addColumn("column");
table.setFillsViewportHeight(true);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setBounds(0, 0, 640, 480);
add(table,BorderLayout.CENTER);
add(button,BorderLayout.EAST);
setVisible(true);
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
addItem(System.currentTimeMillis()+" <-测式数据");
}
});
}
private void addItem(String item){
dtm.insertRow(0, new String[]{item});
}
public static void main(String[] args) {
new MyFrame().setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
有现成的控件为什么不用的,简单而不易出错,推荐使用JTable
如果你为了学习控件重绘,或画图,可以考虑自己用画板去实现自己 要绘的内容
web上的话,循环写入数据就行jsp就行了 格式在html里定义好,更简单