Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE


Đặc biệt khi học trực tuyến ở webiste chúng tôi, bạn sẽ được giải đáp các vấn đền thắc mắc đến môn học trong vòng 3 tháng kể từ khi kết thúc khóa học !

THÔNG TIN VỀ CÁC KHÓA HỌC TRỰC TUYẾN - ÁP DỤNG CHO NHỮNG NGƯỜI ĐĂNG KÍ SAU 01/06/2012
1. Học Flash cơ bản Thời lượng: 30 tiết. Cách học: học cơ bản theo giáo trình, có sự hướng dẫn trực tuyến (truy cập máy tính từ xa, chat Yahoo, mail, video), làm lab dưới sự hỗ trợ và quan sát từ xa (remote máy tính). Giá: 1000.000 VNĐ. Bonus: bạn được tặng giáo trình Flash phiên bản mới nhất.

2. Học cách lập trình game HOẶC làm hoạt hình trên Flash (Yêu cầu: đã qua khóa học Flash cơ bản). Thời lượng: 30 tiết. Cách học: như trên. Giá: 1.750.000 VNĐ.

3. Thiết kế web Thời lượng: 5 tiết Photoshop (học các kĩ thuật cơ bản), 5 tiết html, 5 tiết CSS, 5 tiết JavaScript, Làm Lab trên Dreamweaver 9 tiết, W3C Validator 1 tiết. Mỗi tiết = 45 phút. Cách học: như trên. Giá: 1000.000 VNĐ.

4. Lập trình căn bản C/C++ Thời lượng: 30 tiết. Cách học: như trên. Giá: 1000.000 VNĐ

5. Lập trình hướng đối tượng C++ Thời lượng: 30 tiết. Cách học: như trên. Giá: 1000.000 VNĐ.

6. Lập trình Java căn bản Thời lượng: 30 tiết. Cách học: như trên. Giá: 1000.000 VNĐ.

7. Lập trình C# Thời lượng: 30 tiết. Cách học: như trên. Giá: 1000.000 VNĐ.

8. Lập trình JSP (Yêu cầu: Học Java căn bản HOẶC hoàn tất một bài test của chúng tôi đạt 60%) Thời lượng: 30 tiết. Cách học: như trên. Giá: 1.000.000 VNĐ.

9. Lập trình ASP.NET (Yêu cầu: Học C# căn bản HOẶC hoàn tất một bài test của chúng tôi đạt 60%) Thời lượng: 30 tiết. Cách học: như trên. Giá: 1.000.000 VNĐ.

10. Hướng dẫn học lập trình nâng cao - Học theo yêu cầu. Dành cho những người muốn phát triển kĩ năng lập trình theo hướng giải thuật trong các kì thi Tin học quốc gia; Học theo những phần yêu cầu của người học. Giá: 1.500.000 (lập trình nâng cao); 2.500.000 (học theo yêu cầu) VNĐ (Hướng dẫn, giải đáp trong vòng 45 tiết, liên hệ và được giải đáp nhanh mọi lúc).

11. Luyện thi Đại học, dạy kèm TOÁN - LÝ - HÓA. Dành cho những người muốn bổ túc kiến thức các học phần Toán, Lý, Hóa cũng như luyện thi Đại Học. Đăng kí học Hóa (liên hệ qua imphanvantien@yahoo.com ESPECIALLY, YOU CAN REGISTER TO LEARN BY ENGLISH LANGUAGE.); Đăng kí học Lý (liên hệ qua hoviet@hueic.edu.vn); Đăng kí học Toán (liên hệ qua myhoangthanh@yahoo.com) Giá: liên hệ (1 tuần học 3 buổi, mỗi buổi học 2 tiết).

12. Thiết kế web nâng cao Nội dung/Thời lượng: 30 tiết; học các công nghệ nâng cao phục vụ cho thiết kế web: html5, css3, jquery. Thiết kế web cho các thiết bị di động: smartphone (iPhone, Android, WinPhone,...); tablet (iPad, Android, Windows 8...). Cách học: như trên. Giá: 1.500.000 VNĐ.

13. Lập trình ứng dụng cho smartphone, tablet Android, iOS, Blackberry, WinPhone bằng Adobe AIR Yêu cầu: đã qua khóa học Flash căn bản Thời lượng: 15 tiết Giá: 1.000.000 VNĐ.

14. Lập trình PHP căn bản Thời lượng: 5 tiết MySQL, 20 tiết PHP, 5 tiết làm website thương mại Giá: 1.000.000 VNĐ.

15. Lập trình Javascript Thời lượng/Nội dung: 30 tiết. Học về javascript căn bản, DOM, AJAX, JQUERY. Giá: 1000.000 VNĐ.

16. Lập trình Java toàn tập (Căn bản, nâng cao, winform, webform,...) Thời lượng/Nội dung: 90 tiết. Học về java căn bản, java nâng cao, swing, awt, sql, jsp, html, css, javascript căn bản, DOM, AJAX, JQUERY. Giá: 3.600.000 VNĐ.

17. Lập trình C# toàn tập (Căn bản, nâng cao, winform, webform,...) Thời lượng/Nội dung: 90 tiết. Học về C# căn bản, C# nâng cao, winform, sql, asp.net, html, css, javascript căn bản, DOM, AJAX, JQUERY. Giá: 3.600.000 VNĐ.

18. Lập trình PHP toàn tập (Căn bản, nâng cao, webform,...) Thời lượng/Nội dung: 90 tiết. Học về PHP căn bản, PHP nâng cao, drupal, joomla, html, css, javascript căn bản, DOM, AJAX, JQUERY. Giá: 3.600.000 VNĐ.
=== Ghi chú: + Mỗi lần học liên tục 3 tiết. + Số lượng buổi học trong tuần không hạn chế (tùy theo yêu cầu).
+ Bạn được giảm giá ưu đãi khi học theo nhóm hoặc học nhiều khóa học. + ĐẶC BIỆT: Chúng tôi nhận dạy kèm tại nhà tại các thành phố Huế, Hải Phòng, Đà Nẵng, Hồ Chí Minh). Giá cả thương lượng. + Thanh toán qua chuyển khoản ATM ĐôngÁ, ATM VietinBank, ATM ACB, PayPal.


Gửi đến cho bạn bè qua email:

Search on This Blog

Monday, July 26, 2010

JGraph và JGraphT

1. Lớp FindShortestPathOfDirectedWeightedGraph.java
package myhoangthanh.yahoo.com;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;



import org.jgraph.JGraph;
import org.jgraph.graph.DefaultCellViewFactory;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.GraphLayoutCache;
import org.jgraph.graph.GraphModel;
import org.jgrapht.alg.DijkstraShortestPath;
import org.jgrapht.graph.DefaultDirectedWeightedGraph;
import org.jgrapht.graph.DefaultWeightedEdge;

public class FindShortestPathOfDirectedWeightedGraph extends JFrame{

private static final long serialVersionUID = 1L;

/*
* graph is instance of JGraph Object
* grapht is instance of JGraphT Object
*/
DefaultDirectedWeightedGraph grapht;
ArrayList listedge = new ArrayList();
ArrayList cell = new ArrayList();
Properties savelist = new Properties();
JGraph graph;
int delay = 0;

//For Jframe
JButton btAddv = new JButton("Add Vertex");
JTextField txtVertex = new JTextField();
JButton btAdde = new JButton("Add Edge");
JButton btDj = new JButton("Dijkstra");
JPanel canvas = new JPanel();
JPanel toolbar = new JPanel();
String[] items = {"HaNoi", "Beijing", "NewYork", "Tokyo", "Paris"};
JComboBox startvertex = new JComboBox(items);
JComboBox endvertex = new JComboBox(items);
JLabel lblen = new JLabel("Length of ShortestPath: ");
Timer time;

public void initJGraph(){
GraphModel model = new DefaultGraphModel();
GraphLayoutCache view = new GraphLayoutCache(model, new DefaultCellViewFactory());
graph = new JGraph(model, view);
cell.add(new DefaultGraphCell(new String("HaNoi")));
savelist.setProperty("HaNoi", "0");
cell.add(new DefaultGraphCell(new String("Beijing")));
savelist.setProperty("Beijing", "1");
cell.add(new DefaultGraphCell(new String("NewYork")));
savelist.setProperty("NewYork", "2");
cell.add(new DefaultGraphCell(new String("Tokyo")));
savelist.setProperty("Tokyo", "3");
cell.add(new DefaultGraphCell(new String("Paris")));
savelist.setProperty("Paris", "4");
for (int i=0; i < cell.size(); i++ ){ addVertex(cell.get(i)); }
}

public void addVertex(DefaultGraphCell c){
GraphConstants.setBounds(c.getAttributes(), new Rectangle2D.Double(500*Math.random(), 500*Math.random(), 150, 40));
GraphConstants.setBackground(c.getAttributes(), Color.RED);
GraphConstants.setOpaque(c.getAttributes(), true);
GraphConstants.setFont(c.getAttributes(), new Font(Font.SANS_SERIF, Font.BOLD, 25));
DefaultPort port = new DefaultPort();
c.add(port);
port.setParent(c);
graph.getGraphLayoutCache().insert(c);
}

public void initJGraphT(){
grapht = new DefaultDirectedWeightedGraph(DefaultWeightedEdge.class);
grapht.addVertex("HaNoi");
grapht.addVertex("Beijing");
grapht.addVertex("NewYork");
grapht.addVertex("Tokyo");
grapht.addVertex("Paris");
}

public void initSwing(){
canvas.setSize(500, 500);
canvas.setBackground(Color.white);
toolbar.setSize(600, 50);
txtVertex.setColumns(15);
setLayout(new BorderLayout());
add(toolbar, BorderLayout.NORTH);
add(canvas, BorderLayout.CENTER);
add(btDj, BorderLayout.SOUTH);

canvas.add(graph);
toolbar.setLayout(new FlowLayout());
toolbar.add(txtVertex);
toolbar.add(btAddv);
toolbar.add(startvertex);
toolbar.add(endvertex);
toolbar.add(btAdde);
toolbar.add(lblen);
pack();
btAddv.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
startvertex.addItem(txtVertex.getText());
endvertex.addItem(txtVertex.getText());
grapht.addVertex(txtVertex.getText());

cell.add(new DefaultGraphCell(txtVertex.getText()));
savelist.setProperty(txtVertex.getText(), ((Integer)(cell.size()-1)).toString());
addVertex(cell.get(savelist.size()-1));
txtVertex.setText("");
}
});

btAdde.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
int weight = Integer.parseInt(JOptionPane.showInputDialog(null, "Weight of this Vertex:"));
grapht.addEdge(startvertex.getSelectedItem().toString(), endvertex.getSelectedItem().toString());
grapht.setEdgeWeight(grapht.getEdge(startvertex.getSelectedItem().toString(), endvertex.getSelectedItem().toString()), weight);

org.jgraph.graph.DefaultEdge edge = new org.jgraph.graph.DefaultEdge();
int arrow = GraphConstants.ARROW_CLASSIC;
GraphConstants.setLineEnd(edge.getAttributes(), arrow);
GraphConstants.setEndFill(edge.getAttributes(), true);
GraphConstants.setForeground(edge.getAttributes(), Color.blue);
GraphConstants.setFont(edge.getAttributes(), new Font(Font.SANS_SERIF, Font.BOLD, 30));
GraphConstants.setValue(edge.getAttributes(), weight);
edge.setSource(cell.get(Integer.parseInt(savelist.getProperty(startvertex.getSelectedItem().toString()))).getChildAt(0));
edge.setTarget(cell.get(Integer.parseInt(savelist.getProperty(endvertex.getSelectedItem().toString()))).getChildAt(0));
graph.getGraphLayoutCache().insert(edge);
}
});

btDj.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
       String start = startvertex.getSelectedItem().toString();
       String end = endvertex.getSelectedItem().toString();
       DijkstraShortestPath dj = new DijkstraShortestPath(grapht, start, end);

   
       StringTokenizer token = new StringTokenizer(dj.getPath().toString().replaceAll(" ", ""), "():,[]");
       if (token.hasMoreTokens())
        listedge.add(token.nextToken());
       int numtoken = (token.countTokens()%2 == 0)?(token.countTokens()):(token.countTokens()+1);
for (int i=0; i< numtoken; i++){
if (token.hasMoreTokens())
listedge.add(token.nextToken());
if (token.hasMoreTokens())
token.nextToken();
}
if (token.hasMoreTokens())
listedge.add(token.nextToken());
     
time = new Timer(1000, new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
       setBackGround(cell.get(Integer.parseInt(savelist.get(listedge.get(delay)).toString())));
       if(delay
        delay++;
       else
        time.stop();
}
});
time.start();
       setBorderColor(cell.get(Integer.parseInt(savelist.get(listedge.get(0)).toString())));
       setBorderColor(cell.get(Integer.parseInt(savelist.get(listedge.get(listedge.size()-1)).toString())));
       lblen.setText("Length of ShortestPath: "+dj.getPathLength());
}
});
}

@SuppressWarnings("unchecked")
public void setBackGround(DefaultGraphCell c){
Map nested = new Hashtable();
Map attributeMap1 = new Hashtable();
GraphConstants.setBackground(attributeMap1, Color.green);
nested.put(c, attributeMap1);
graph.getGraphLayoutCache().edit(nested);
}

@SuppressWarnings("unchecked")
public void setBorderColor(DefaultGraphCell c){
Map nested = new Hashtable();
Map attributeMap1 = new Hashtable();
GraphConstants.setBorderColor(attributeMap1, Color.red);
nested.put(c, attributeMap1);
graph.getGraphLayoutCache().edit(nested);
}

public FindShortestPathOfDirectedWeightedGraph(String s){
super(s);
initJGraph();
initJGraphT();
initSwing();
}
}


2. Lớp MainClass.java



package myhoangthanh.yahoo.com;

import javax.swing.JFrame;

public class MainClass {

public static void main(String[] args) {
FindShortestPathOfDirectedWeightedGraph myform = new FindShortestPathOfDirectedWeightedGraph("Find Shortest Path of Directed Weighted Graph.");
myform.setBounds(8, 30, 720, 870);
myform.setVisible(true);
myform.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

No comments:

Post a Comment