prms+java的简单介绍
今天给各位分享prms+java的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 在cocos2dx中需怎么引入
- 2、现在要用Java Swing写一个可以在swing中打开office的软件,目前只要打开显示出来就行
- 3、求同一张jsp页面如何实现对应的事件切换不同的表单的java代码
- 4、Tomcat安装在中文目录下,无法启动服务
- 5、急求POI 将数据导出到Word的实例
java 在cocos2dx中需怎么引入
要完成在cocos2dx的场景上一个点击事件,传递一个消息到java层,下面让我们看看如何完成它。
包括
你需要在你的项目中添加以下引用,原作者已经建立了一个在线项目。请确保在你的项目中包含文件了c++和Java,这里有个链接你可以查看一下:EasyNDK
C++ 层面:
[cpp] view plaincopy
#include "NDKHelper.h"
// 在cocos2dx中的按钮点击方法
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
//注册一个selector,那么当我们的native环境(java环境)调用这个字符串名字的函数(此处为名字为SampleSelector的函 数)的时候,这个selector可以响应请求
//注意:设置组名是为了在析构函数中能够清除掉selector
NDKHelper::AddSelector("HelloWorldSelectors",
"SampleSelector",
callfuncND_selector(HelloWorld::SampleSelector),
this);
// 为这个将要传递到native(也就是Java)语言中的消息设置参数
// 在c++中发送要调用的函数名
CCDictionary* prms = CCDictionary::create();
prms-setObject(CCString::create("SampleSelector"), "to_be_called");
// 最后在当前环境(c++)中调用native方法
SendMessageWithParams(string("SampleSelector"), prms);
}
// 一个回调选择器,native语言(java)将会调用它
void HelloWorld::SampleSelector(CCNode *sender, void *data)
{
CCLog("Called from native environment");
}
// 析构函数移除掉HelloWorldSelectors中的选择器(selectors)
HelloWorld::~HelloWorld()
{
// 移除相关联的选择器,因为我们将要销毁当前实例
NDKHelper::RemoveSelectorsInGroup("HelloWorldSelectors");
}
Java层面代码:
[cpp] view plaincopy
/** 当activity第一次被创建调用*/
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 在主activity中,设置这个activity作为c++消息的接受者
AndroidNDKHelper.SetNDKReciever(this);
}
//实现这个被c++发送消息调用的方法
//确保这个方法的名字跟c++传递过来的字符串相同
// 比如我们从c++中传递"SampleSelector"字符串,这就是为什么我们创建这个方法的原因了
public void SampleSelector(JSONObject prms)
{
Log.v("SampleSelector", "传过来的参数是 : " + prms.toString());
String CPPFunctionToBeCalled = null;
try
{
CPPFunctionToBeCalled = prms.getString("to_be_called");
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("这是一个android层中的popup").
setTitle("Hello World!").
setNeutralButton("OK", null).show();
// 发送带参数的消息,仅仅当selector列表中有这个相同名字的函数,c++才会接受这些消息,
AndroidNDKHelper.SendMessageWithParameters(CPPFunctionToBeCalled, null);
}
为了跟其他JavaSDK相连接,比如微博SDK,FaceBook SDK等,你可以按照这些sdk的java指导说明,实现这些消息,并传递接口到cocos2dx层面调用,使之成为你自己的SDK。在cocos2dx中。我已经通过这种方法实现了APPCircle,Flurry和很多其他的SDK。
现在要用Java Swing写一个可以在swing中打开office的软件,目前只要打开显示出来就行
先不说swing,首先你要做的是在Java中把office的文档读出来,这里通常需要使用的是poi.
以word为例。
public class WordExtractor {
public WordExtractor() {
}
public String extractText(InputStream in) throws IOException {
ArrayList text = new ArrayList();
POIFSFileSystem fsys = new POIFSFileSystem(in);
DocumentEntry headerProps = (DocumentEntry) fsys.getRoot().getEntry("WordDocument");
DocumentInputStream din = fsys.createDocumentInputStream("WordDocument");
byte[] header = new byte[headerProps.getSize()];
din.read(header);
din.close();
// Prende le informazioni dall'header del documento
int info = LittleEndian.getShort(header, 0xa);
boolean useTable1 = (info 0x200) != 0;
//boolean useTable1 = true;
// Prende informazioni dalla piece table
int complexOffset = LittleEndian.getInt(header, 0x1a2);
//int complexOffset = LittleEndian.getInt(header);
String tableName = null;
if (useTable1) {
tableName = "1Table";
} else {
tableName = "0Table";
}
DocumentEntry table = (DocumentEntry) fsys.getRoot().getEntry(tableName);
byte[] tableStream = new byte[table.getSize()];
din = fsys.createDocumentInputStream(tableName);
din.read(tableStream);
din.close();
din = null;
fsys = null;
table = null;
headerProps = null;
int multiple = findText(tableStream, complexOffset, text);
StringBuffer sb = new StringBuffer();
int size = text.size();
tableStream = null;
for (int x = 0; x size; x++) {
WordTextPiece nextPiece = (WordTextPiece) text.get(x);
int start = nextPiece.getStart();
int length = nextPiece.getLength();
boolean unicode = nextPiece.usesUnicode();
String toStr = null;
if (unicode) {
toStr = new String(header, start, length * multiple, "UTF-16LE");
} else {
toStr = new String(header, start, length, "ISO-8859-1");
}
sb.append(toStr).append(" ");
}
return sb.toString();
}
private static int findText(byte[] tableStream, int complexOffset, ArrayList text)
throws IOException {
//actual text
int pos = complexOffset;
int multiple = 2;
//skips through the prms before we reach the piece table. These contain data
//for actual fast saved files
while (tableStream[pos] == 1) {
pos++;
int skip = LittleEndian.getShort(tableStream, pos);
pos += 2 + skip;
}
if (tableStream[pos] != 2) {
throw new IOException("corrupted Word file");
} else {
//parse out the text pieces
int pieceTableSize = LittleEndian.getInt(tableStream, ++pos);
pos += 4;
int pieces = (pieceTableSize - 4) / 12;
for (int x = 0; x pieces; x++) {
int filePos =
LittleEndian.getInt(tableStream, pos + ((pieces + 1) * 4) + (x * 8) + 2);
boolean unicode = false;
if ((filePos 0x40000000) == 0) {
unicode = true;
} else {
unicode = false;
multiple = 1;
filePos = ~(0x40000000); //gives me FC in doc stream
filePos /= 2;
}
int totLength =
LittleEndian.getInt(tableStream, pos + (x + 1) * 4)
- LittleEndian.getInt(tableStream, pos + (x * 4));
WordTextPiece piece = new WordTextPiece(filePos, totLength, unicode);
text.add(piece);
}
}
return multiple;
}
public static void main(String[] args){
WordExtractor w = new WordExtractor();
POIFSFileSystem ps = new POIFSFileSystem();
try{
File file = new File("C:\\test.doc");
InputStream in = new FileInputStream(file);
String s = w.extractText(in);
System.out.println(s);
}catch(Exception e){
e.printStackTrace();
}
}
}
class WordTextPiece {
private int _fcStart;
private boolean _usesUnicode;
private int _length;
public WordTextPiece(int start, int length, boolean unicode) {
_usesUnicode = unicode;
_length = length;
_fcStart = start;
}
public boolean usesUnicode() {
return _usesUnicode;
}
public int getStart() {
return _fcStart;
}
public int getLength() {
return _length;
}
}
内容都取出来了,在Swing文档上append String不就好了
那就有些麻烦了,像Eclipse这种做的这么好的编辑器,打开word文件都是直接启动office去打开的,你这个可能有些麻烦。
求同一张jsp页面如何实现对应的事件切换不同的表单的java代码
java后台中把返回的数据保存到 session中 如:String maxPrmsCode = "1";
Struts2Utils.getSession().setAttribute("maxPrmsCode", maxPrmsCode);
前台获取maxPrmsCode值,
c:if test="${maxPrmsCode eq '1'}"
aaaaaaaa
/c:if
c:if test="${maxPrmsCode !eq '1'}"
bbbbbbbbb
/c:if
Tomcat安装在中文目录下,无法启动服务
tomcat不要安装在中文路径下,不光是tomcat,其他和java相关的软件都不要安装在中文路径下。
急求POI 将数据导出到Word的实例
import java.io.*;
import java.util.*;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.util.LittleEndian;
public class WordTest {
public WordTest() {
}
public static boolean writeWordFile(String path, String content) {
boolean w = false;
try {
// byte b[] = content.getBytes("ISO-8859-1");
byte b[] = content.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(b);
POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();
DocumentEntry de = directory.createDocument("WordDocument", bais);
FileOutputStream ostream = new FileOutputStream(path);
fs.writeFilesystem(ostream);
bais.close();
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
return w;
}
public static void main(String[] args){
boolean b = writeWordFile("E://test.doc","hello");
}
}
/*
public String extractText(InputStream in) throws IOException {
ArrayList text = new ArrayList();
POIFSFileSystem fsys = new POIFSFileSystem(in);
DocumentEntry headerProps = (DocumentEntry) fsys.getRoot().getEntry("WordDocument");
DocumentInputStream din = fsys.createDocumentInputStream("WordDocument");
byte[] header = new byte[headerProps.getSize()];
din.read(header);
din.close();
// Prende le informazioni dall'header del documento
int info = LittleEndian.getShort(header, 0xa);
boolean useTable1 = (info 0x200) != 0;
//boolean useTable1 = true;
// Prende informazioni dalla piece table
int complexOffset = LittleEndian.getInt(header, 0x1a2);
//int complexOffset = LittleEndian.getInt(header);
String tableName = null;
if (useTable1) {
tableName = "1Table";
} else {
tableName = "0Table";
}
DocumentEntry table = (DocumentEntry) fsys.getRoot().getEntry(tableName);
byte[] tableStream = new byte[table.getSize()];
din = fsys.createDocumentInputStream(tableName);
din.read(tableStream);
din.close();
din = null;
fsys = null;
table = null;
headerProps = null;
int multiple = findText(tableStream, complexOffset, text);
StringBuffer sb = new StringBuffer();
int size = text.size();
tableStream = null;
for (int x = 0; x size; x++) {
WordTextPiece nextPiece = (WordTextPiece) text.get(x);
int start = nextPiece.getStart();
int length = nextPiece.getLength();
boolean unicode = nextPiece.usesUnicode();
String toStr = null;
if (unicode) {
toStr = new String(header, start, length * multiple, "UTF-16LE");
} else {
toStr = new String(header, start, length, "ISO-8859-1");
}
sb.append(toStr).append(" ");
}
return sb.toString();
}
private static int findText(byte[] tableStream, int complexOffset, ArrayList text)
throws IOException {
//actual text
int pos = complexOffset;
int multiple = 2;
//skips through the prms before we reach the piece table. These contain data
//for actual fast saved files
while (tableStream[pos] == 1) {
pos++;
int skip = LittleEndian.getShort(tableStream, pos);
pos += 2 + skip;
}
if (tableStream[pos] != 2) {
throw new IOException("corrupted Word file");
} else {
//parse out the text pieces
int pieceTableSize = LittleEndian.getInt(tableStream, ++pos);
pos += 4;
int pieces = (pieceTableSize - 4) / 12;
for (int x = 0; x pieces; x++) {
int filePos =
LittleEndian.getInt(tableStream, pos + ((pieces + 1) * 4) + (x *img src="/images/forum/smiles/icon_cool.gif"/ + 2);
boolean unicode = false;
if ((filePos 0x40000000) == 0) {
unicode = true;
} else {
unicode = false;
multiple = 1;
filePos = ~(0x40000000); //gives me FC in doc stream
filePos /= 2;
}
int totLength =
LittleEndian.getInt(tableStream, pos + (x + 1) * 4)
- LittleEndian.getInt(tableStream, pos + (x * 4));
WordTextPiece piece = new WordTextPiece(filePos, totLength, unicode);
text.add(piece);
}
}
return multiple;
}
public static void main(String[] args){
WordTest w = new WordTest();
POIFSFileSystem ps = new POIFSFileSystem();
try{
File file = new File("C:\\test.doc");
InputStream in = new FileInputStream(file);
String s = w.extractText(in);
System.out.println(s);
}catch(Exception e){
e.printStackTrace();
}
}
public boolean writeWordFile(String path, String content) {
boolean w = false;
try {
// byte b[] = content.getBytes("ISO-8859-1");
byte b[] = content.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(b);
POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();
DocumentEntry de = directory.createDocument("WordDocument", bais);
FileOutputStream ostream = new FileOutputStream(path);
fs.writeFilesystem(ostream);
bais.close();
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
return w;
}
}
class WordTextPiece {
private int _fcStart;
private boolean _usesUnicode;
private int _length;
public WordTextPiece(int start, int length, boolean unicode) {
_usesUnicode = unicode;
_length = length;
_fcStart = start;
}
public boolean usesUnicode() {
return _usesUnicode;
}
public int getStart() {
return _fcStart;
}
public int getLength() {
return _length;
}
}
*/
关于prms+java和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-20,除非注明,否则均为
原创文章,转载请注明出处。