/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Coinelia
*/
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.imageio.*;
import java.util.*;
public class newPanel extends JPanel{
Graph graph;
JComboBox fromAD,toAD,allAD,fromD,toD;
JButton createAD,createRD,deleteAD,deleteRD;
JTextField edgeW;
JRadioButton single,two,singleD,twoD;
JPanel p,np,dp;
boolean address,singleline,delete;
int mouseX,mouseY;
public newPanel(){
graph=new Graph();
fromAD=new JComboBox();
toAD=new JComboBox();
allAD=new JComboBox();
fromD=new JComboBox();
toD=new JComboBox();
createAD=new JButton("创建地点");
createAD.addActionListener(new ButtonListener());
createRD=new JButton("创建道路");
createRD.addActionListener(new ButtonListener());
deleteAD=new JButton("删除地点");
deleteAD.addActionListener(new ButtonListener());
deleteRD=new JButton("删除道路");
deleteRD.addActionListener(new ButtonListener());
edgeW=new JTextField(5);
single=new JRadioButton("单行道");
two=new JRadioButton("双行道",true);
single.addActionListener(new ButtonListener());
two.addActionListener(new ButtonListener());
ButtonGroup bgroup1 = new ButtonGroup();
bgroup1.add(single);
bgroup1.add(two);
singleD=new JRadioButton("单行道");
twoD=new JRadioButton("双行道",true);
singleD.addActionListener(new ButtonListener());
twoD.addActionListener(new ButtonListener());
ButtonGroup bgroup2 = new ButtonGroup();
bgroup2.add(singleD);
bgroup2.add(twoD);
address=false;
singleline=false;
delete=false;
mouseX=0;
mouseY=0;
p=new JPanel();
np=new JPanel();
np.add(createAD);
np.add(new JLabel("从"));
np.add(fromAD);
np.add(new JLabel("到"));
np.add(toAD);
np.add(new JLabel("长度"));
np.add(edgeW);
np.add(single);
np.add(two);
np.add(createRD);
dp=new JPanel();
dp.add(allAD);
dp.add(deleteAD);
dp.add(new JLabel("从"));
dp.add(fromD);
dp.add(new JLabel("到"));
dp.add(toD);
dp.add(singleD);
dp.add(twoD);
dp.add(deleteRD);
p.setLayout(new CardLayout());
p.add("newPanel",np);
p.add("deletePanel",dp);
((CardLayout)p.getLayout()).show(p,"newPanel");
setLayout(new BorderLayout());
add(p,BorderLayout.NORTH);
setBackground(Color.white);
setPreferredSize(new Dimension(600,600));
addMouseListener(new MouseChange());
addMouseMotionListener(new MouseMotion());
}
void setDelete(boolean d){
delete=d;
if(delete==true){
address=false;
((CardLayout)p.getLayout()).show(p,"deletePanel");
}
else
((CardLayout)p.getLayout()).show(p,"newPanel");
}
void setGraph(Graph g){
graph=g;
for(int i=0;i<graph.VerticesNum();i++){
fromAD.addItem(graph.ElementAt(i).getVertex().getName());
toAD.addItem(graph.ElementAt(i).getVertex().getName());
allAD.addItem(graph.ElementAt(i).getVertex().getName());
fromD.addItem(graph.ElementAt(i).getVertex().getName());
toD.addItem(graph.ElementAt(i).getVertex().getName());
}
}
Graph getGraph(){
return graph;
}
void refresh(){
fromAD.removeAllItems();
toAD.removeAllItems();
allAD.removeAllItems();
fromD.removeAllItems();
toD.removeAllItems();
for(int i=0;i<graph.VerticesNum();i++){
fromAD.addItem(graph.ElementAt(i).getVertex().getName());
toAD.addItem(graph.ElementAt(i).getVertex().getName());
allAD.addItem(graph.ElementAt(i).getVertex().getName());
fromD.addItem(graph.ElementAt(i).getVertex().getName());
toD.addItem(graph.ElementAt(i).getVertex().getName());
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
for(int i=0;i<graph.VerticesNum();i++){
Unit u=graph.ElementAt(i);
for(int j=0;j<u.EdgesNum();j++){
Edge oneEdge=u.EdgeAt(j);
Vertex from=oneEdge.getFrom();
Vertex to=oneEdge.getTo();
String s=oneEdge.getWeight()+"";
g.setColor(Color.lightGray);
g2.setStroke(new BasicStroke(3.0f));
g.drawLine(from.getX(), from.getY(), to.getX(), to.getY());
g.setColor(Color.magenta);
g.setFont(new Font("Modern No. 20",Font.BOLD,20));
g.drawString(s, (from.getX()+to.getX())/2, (from.getY()+to.getY())/2);
}
}
for(int i=0;i<graph.VerticesNum();i++){
Vertex v=graph.ElementAt(i).getVertex();
g.setColor(Color.cyan);
g.fillOval(v.getX()-4, v.getY()-4, 8, 8);
g.setColor(Color.blue);
g2.setStroke(new BasicStroke(1.0f));
g.drawOval(v.getX()-4, v.getY()-4, 8, 8);
g.setColor(Color.black);
g.setFont(new Font("宋体",Font.PLAIN,15));
g.drawString(v.getName(), v.getX(), v.getY()+20);
}
if(address==true){
g.setColor(Color.cyan);
g.fillOval(mouseX-4, mouseY-4, 8, 8);
g.setColor(Color.blue);
g.drawOval(mouseX-4, mouseY-4, 8, 8);
}
}
private class ButtonListener implements ActionListener{
public void actionPerformed (ActionEvent e){
if(e.getSource()==single)
singleline=true;
if(e.getSource()==two)
singleline=false;
if(e.getSource()==singleD)
singleline=true;
if(e.getSource()==twoD)
singleline=false;
if(e.getSource()==createAD)
address=true;
if(e.getSource()==createRD){
address=false;
if(edgeW.getText().equals("")==false){
int from=fromAD.getSelectedIndex();
int to=toAD.getSelectedIndex();
double weight=Double.parseDouble(edgeW.getText());
if(from!=to){
graph.setEdge(new Edge(graph.ElementAt(from).getVertex(),graph.ElementAt(to).getVertex(),weight));
if(singleline==false)
graph.setEdge(new Edge(graph.ElementAt(to).getVertex(),graph.ElementAt(from).getVertex(),weight));
}
repaint();
}
}
if(e.getSource()==deleteAD){
int i=allAD.getSelectedIndex();
Vertex v=graph.ElementAt(i).getVertex();
fromAD.removeItemAt(i);
toAD.removeItemAt(i);
allAD.removeItemAt(i);
fromD.removeItemAt(i);
toD.removeItemAt(i);
graph.delVertex(v);
repaint();
}
if(e.getSource()==deleteRD){
Vertex from=graph.ElementAt(fromD.getSelectedIndex()).getVertex();
Vertex to=graph.ElementAt(toD.getSelectedIndex()).getVertex();
graph.delEdge(new Edge(from,to));
if(singleline==false)
graph.delEdge(new Edge(to,from));
repaint();
}
}
}
private class MouseChange extends M
GPS.rar_GPS数据_Java中GPS定位_gps ja_gps定位_java写gps定位
版权申诉
191 浏览量
2022-07-15
16:03:26
上传
评论
收藏 124KB RAR 举报
林当时
- 粉丝: 95
- 资源: 1万+
最新资源
- 2%EF%BC%9A%E9%99%95%E8%A5%BF%E
- yyspdz62_944.apk
- SAP公司间采购EDI配置-如何触发自动MIRO.docx
- python197基于图像识别的仪表实时监控系统.rar
- python196基于循环神经网络的情感分类系统.rar
- I2C驱动SHT30温湿度传感器和LCD12864使用例程(RSCG12864B)
- python193中学地理-中国的江河湖泊教学网(django).rar
- python191基于时间序列分析的大气污染预测软件(django).rar
- python190基于人脸识别智能化小区门禁管理系统.rar
- python189某医院体检挂号系统.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈