「java读写graph」Java读写锁

博主:adminadmin 2023-03-20 23:30:15 375

今天给各位分享java读写graph的知识,其中也会对Java读写锁进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求助一个graph.java主程序及子程序,并请讲一讲它实现的功能

我有一个主程序NOTEBO0K.java

  主程序中设置了一个“字体”选择菜单fontmenuitem

  我想在按下fontmenuitem菜单时就可弹出字体对话框font

  假如字体对话框在子程序FontDialog.java中实现。

在主程序NOTEBO0K.java:

public class NOTEBO0K(){

 .....

   //设置“字体”选择菜单fontmenuitem的事件

  ActionListener fontsetting=new ActionListener(){

   public void actionPerformed(ActionEvent e) 

        {

         FontDialog  font=new  FontDialog(this);//想在这里引入字体对话框

         font.setLocation(80,50);

         font.setModal(true); 

         font.show(); 

        }

         };

    fontmenuitem.addActionListener(fontsetting);

}

在//FontDialog.java

public class FontDialog extends JDialog

{

    ......

JTextField nameTxt=new JTextField("Default");//nameTxt来表示取得的字体名

JTextField styleTxt=new JTextField("Plain");

JTextField sizeTxt=new JTextField("15");

......... //选择字体的过程

       String name=nameTxt.getText();//name来表示取得的字体名

int style=((Integer)styleTbl.get(styleTxt.getText())).intValue();

          //style来表示取得的字体类型

String sizeStr=sizeTxt.getText().trim();//sizeStr来表示取得的字体大小

......

}

Java:定义一个图形类(Graph),带有面积计算函数,在此基础上派生出矩形类(Rect)及圆形类(Circ),二者重写

abstract class Graph {

public void getArea(){};

}

class Circle extends Graph{

double radius;

Circle(double radius){

this.radius=radius;

}

public void getArea(){

System.out.println("圆面积:"+Math.PI*radius*radius);

}

}

class Rect extends Graph{

double width;

double length;

Rect(double length,double width){

this.length=length;

this.width=width;

}

public void getArea(){

System.out.println("圆面积:"+length*width);

}

}

public class TestArea{

public static void main(String[] args){

Graph g=null;

g=new Rect(10,20);

g.getArea();

g=new Circle(10);

g.getArea();

}

}

java 中的Graph 怎么用

Graphics ? Graphics 类是java所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。不过实际应用中多使用Graphics2D ,Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。

java程序如何调用Graphviz

网上有别人已经写好的一个GraphViz.java类。java可以直接调用这个类实现画图功能,但是使用这个类的前提是你的电脑已经装了GraphViz软件,你可以在下载windows版本,装完后,找到dot.exe所在的路径,我电脑上的是D:\Program Files\Graphviz2.30\bin\dot.exe,

将GraphViz.java中的这一路径改成你电脑上的路径,基本上就可以用了。

package Graphoutput;

// GraphViz.java - a simple API to call dot from Java programs

/*$Id$*/

/*

******************************************************************************

* *

* (c) Copyright 2003 Laszlo Szathmary *

* *

* This program is free software; you can redistribute it and/or modify it *

* under the terms of the GNU Lesser General Public License as published by *

* the Free Software Foundation; either version 2.1 of the License, or *

* (at your option) any later version. *

* *

* This program is distributed in the hope that it will be useful, but *

* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *

* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public *

* License for more details. *

* *

* You should have received a copy of the GNU Lesser General Public License *

* along with this program; if not, write to the Free Software Foundation, *

* Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *

* *

******************************************************************************

*/

import java.io.BufferedReader;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.InputStreamReader;

/**

* dl

* dtPurpose: GraphViz Java API

* dd

*

* dtDescription:

* dd With this Java class you can simply call dot

* from your Java programs

* dtExample usage:

* dd

* pre

* GraphViz gv = new GraphViz();

* gv.addln(gv.start_graph());

* gv.addln("A - B;");

* gv.addln("A - C;");

* gv.addln(gv.end_graph());

* System.out.println(gv.getDotSource());

*

* String type = "gif";

* File out = new File("out." + type); // out.gif in this example

* gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );

* /pre

* /dd

*

* /dl

*

* @version v0.4, 2011/02/05 (February) -- Patch of Keheliya Gallaba is added. Now you

* can specify the type of the output file: gif, dot, fig, pdf, ps, svg, png, etc.

* @version v0.3, 2010/11/29 (November) -- Windows support + ability

* to read the graph from a text file

* @version v0.2, 2010/07/22 (July) -- bug fix

* @version v0.1, 2003/12/04 (December) -- first release

* @author Laszlo Szathmary (a href="jabba.laci@gmail.com"jabba.laci@gmail.com/a)

*/

public class GraphViz

{

/**

* The dir. where temporary files will be created.

*/

//private static String TEMP_DIR = "/tmp"; // Linux

private static String TEMP_DIR = "c:/temp"; // Windows

/**

* Where is your dot program located? It will be called externally.

*/

// private static String DOT = "/usr/bin/dot"; // Linux

private static String DOT = "D:\\Program Files\\Graphviz2.30\\bin\\dot.exe"; // Windows

/**

* The source of the graph written in dot language.

*/

private StringBuilder graph = new StringBuilder();

/**

* Constructor: creates a new GraphViz object that will contain

* a graph.

*/

public GraphViz() {

}

/**

* Returns the graph's source description in dot language.

* @return Source of the graph in dot language.

*/

public String getDotSource() {

return graph.toString();

}

/**

* Adds a string to the graph's source (without newline).

*/

public void add(String line) {

graph.append(line);

}

/**

* Adds a string to the graph's source (with newline).

*/

public void addln(String line) {

graph.append(line + "\n");

}

/**

* Adds a newline to the graph's source.

*/

public void addln() {

graph.append('\n');

}

/**

* Returns the graph as an image in binary format.

* @param dot_source Source of the graph to be drawn.

* @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png.

* @return A byte array containing the image of the graph.

*/

public byte[] getGraph(String dot_source, String type)

{

File dot;

byte[] img_stream = null;

try {

dot = writeDotSourceToFile(dot_source);

if (dot != null)

{

img_stream = get_img_stream(dot, type);

if (dot.delete() == false)

System.err.println("Warning: " + dot.getAbsolutePath() + " could not be deleted!");

return img_stream;

}

return null;

} catch (java.io.IOException ioe) { return null; }

}

/**

* Writes the graph's image in a file.

* @param img A byte array containing the image of the graph.

* @param file Name of the file to where we want to write.

* @return Success: 1, Failure: -1

*/

public int writeGraphToFile(byte[] img, String file)

{

File to = new File(file);

return writeGraphToFile(img, to);

}

/**

* Writes the graph's image in a file.

* @param img A byte array containing the image of the graph.

* @param to A File object to where we want to write.

* @return Success: 1, Failure: -1

*/

public int writeGraphToFile(byte[] img, File to)

{

try {

FileOutputStream fos = new FileOutputStream(to);

fos.write(img);

fos.close();

} catch (java.io.IOException ioe) { ioe.printStackTrace();return -1; }

return 1;

}

/**

* It will call the external dot program, and return the image in

* binary format.

* @param dot Source of the graph (in dot language).

* @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png.

* @return The image of the graph in .gif format.

*/

private byte[] get_img_stream(File dot, String type)

{

File img;

byte[] img_stream = null;

try {

img = File.createTempFile("graph_", "."+type, new File(GraphViz.TEMP_DIR));

Runtime rt = Runtime.getRuntime();

// patch by Mike Chenault

String[] args = {DOT, "-T"+type, dot.getAbsolutePath(), "-o", img.getAbsolutePath()};

Process p = rt.exec(args);

p.waitFor();

FileInputStream in = new FileInputStream(img.getAbsolutePath());

img_stream = new byte[in.available()];

in.read(img_stream);

// Close it if we need to

if( in != null ) in.close();

if (img.delete() == false)

System.err.println("Warning: " + img.getAbsolutePath() + " could not be deleted!");

}

catch (java.io.IOException ioe) {

System.err.println("Error: in I/O processing of tempfile in dir " + GraphViz.TEMP_DIR+"\n");

System.err.println(" or in calling external command");

ioe.printStackTrace();

}

catch (java.lang.InterruptedException ie) {

System.err.println("Error: the execution of the external program was interrupted");

ie.printStackTrace();

}

return img_stream; }

/**

* Writes the source of the graph in a file, and returns the written file

* as a File object.

* @param str Source of the graph (in dot language).

* @return The file (as a File object) that contains the source of the graph.

*/

public File writeDotSourceToFile(String str) throws java.io.IOException

{

File temp;

try {

temp = File.createTempFile("graph_", ".dot.tmp", new File(GraphViz.TEMP_DIR));

FileWriter fout = new FileWriter(temp);

fout.write(str);

fout.close();

}

catch (Exception e) {

System.err.println("Error: I/O error while writing the dot source to temp file!");

return null;

}

return temp;

}

/**

* Returns a string that is used to start a graph.

* @return A string to open a graph.

*/

public String start_graph() {

return "digraph G {" ;

}

/**

* Returns a string that is used to end a graph.

* @return A string to close a graph.

*/

public String end_graph() {

return "}";

}

/**

* Read a DOT graph from a text file.

*

* @param input Input text file containing the DOT graph

* source.

*/

public void readSource(String input)

{

StringBuilder sb = new StringBuilder();

try

{

FileInputStream fis = new FileInputStream(input);

DataInputStream dis = new DataInputStream(fis);

BufferedReader br = new BufferedReader(new InputStreamReader(dis));

String line;

while ((line = br.readLine()) != null) {

sb.append(line);

}

dis.close();

}

catch (Exception e) {

System.err.println("Error: " + e.getMessage());

}

this.graph = sb;

}

} // end of class GraphViz

通过下面这个类调用graphViz.java

import java.io.File;

public class Proba

{

public static void main(String[] args)

{

Proba p = new Proba();

p.start();

// p.start2();

}

/**

* Construct a DOT graph in memory, convert it

* to image and store the image in the file system.

*/

private void start()

{

GraphViz gv = new GraphViz();

gv.addln(gv.start_graph());

gv.addln("A - B;");

gv.addln("A - C;");

gv.addln(gv.end_graph());

System.out.println(gv.getDotSource());

String type = "gif";

// String type = "dot";

// String type = "fig"; // open with xfig

// String type = "pdf";

// String type = "ps";

// String type = "svg"; // open with inkscape

// String type = "png";

// String type = "plain";

File out = new File("/tmp/out." + type); // Linux

// File out = new File("c:/eclipse.ws/graphviz-java-api/out." + type); // Windows

gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );

}

/**

* Read the DOT source from a file,

* convert to image and store the image in the file system.

*/

private void start2()

{

// String dir = "/home/jabba/eclipse2/laszlo.sajat/graphviz-java-api"; // Linux

// String input = dir + "/sample/simple.dot";

String input = "c:/eclipse.ws/graphviz-java-api/sample/simple.dot"; // Windows

GraphViz gv = new GraphViz();

gv.readSource(input);

System.out.println(gv.getDotSource());

String type = "gif";

// String type = "dot";

// String type = "fig"; // open with xfig

// String type = "pdf";

// String type = "ps";

// String type = "svg"; // open with inkscape

// String type = "png";

// String type = "plain";

File out = new File("/tmp/simple." + type); // Linux

// File out = new File("c:/eclipse.ws/graphviz-java-api/tmp/simple." + type); // Windows

gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );

}

}

关于java读写graph和Java读写锁的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。