thanks, All.
Now, I met another problem.
modified the java.security file in jre1.5.0_07\lib\security directory.
But the project is a B/S project, so I think it's not a good way. we
can't change every files in Client.
ant wrote:
how to save the data of a JTable to a html file?
now, I am doing a Java Applet program, and I need to save the content
of a JTable to html formatted file.
if you hava some useful suggestions or you know some third-party
components, please tell me!
Perhaps not directly relevant (it's a piece of cake to generate HTML
from the table model), but I thought I'd try using JTable itself (well,
the PL&F) to generate HTML. JTable supports copying as HTML via
clipboards and drag and drop, which we can exploit with a private
clipboard. Disappointing code and disappointing results below.
Some bad points:
o You need to mutate the table (select all).
o The APIs are cumbersome.
o Actual requirements of the implementation are under specified.
o The table is plain, with just toString applied to data.
o Even the header isn't included.
o There's no sensible extension mechanism.
o It's not particularly efficiently coded.
Tom Hawtin
import java.awt.*;
import java.awt.datatransfer.*;
import javax.swing.*;
class ExportTableAsHTMLDemo {
private static final DataFlavor HTML_STRING_FLAVOR;
static {
// The datatransfer API could do with some work here...
try {
HTML_STRING_FLAVOR = new DataFlavor(
"text/html;class=java.lang.String"
);
} catch (ClassNotFoundException exc) {
// Don't even load class.
throw new Error(exc);
}
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
go();
}
});
}
public static void go() {
// Some random data.
javax.swing.JTable table = new javax.swing.JTable(
new Object[][]{
new Object[] { "some", "data" },
new Object[] { "more", "data" },
},
new Object[] { "Col A", "Col B" }
);
// Exports selected data only.
table.selectAll(); // Evil.
javax.swing.TransferHandler handler =
table.getTransferHandler();
if (handler == null) {
System.err.println("No transfer handler.");
return;
}
int actions = handler.getSourceActions(table);
if ((actions & javax.swing.TransferHandler.COPY) == 0) {
System.err.println("Table does not support copy.");
return;
}
java.awt.datatransfer.Clipboard clipboard =
new java.awt.datatransfer.Clipboard(
"Export table as HTML private clipboard"
);
try {
handler.exportToClipboard(
table, clipboard, javax.swing.TransferHandler.COPY
);
} catch (IllegalStateException exc) {
exc.printStackTrace();
return;
}
java.awt.datatransfer.Transferable transferable =
clipboard.getContents(/* unused... */null);
if (transferable == null) {
System.err.println("Clipboard empty");
return;
}
// Just support HTML as String.
// Could also use HTML as Reader or UTF-8 InputStream
// (particularly for large tables,
// if the implementation was better).
if (!transferable.isDataFlavorSupported(HTML_STRING_FLAVOR)) {
System.err.println("HTML (String) not supported");
return;
}
try {
Object data = transferable.getTransferData(
HTML_STRING_FLAVOR
);
System.out.println(data);
} catch (java.io.IOException exc) {
exc.printStackTrace();
return;
} catch (java.awt.datatransfer.UnsupportedFlavorException exc) {
System.err.println("HTML (String) not supported");
return;
}
}
}
<html>
<body>
<table>
<tr>
<td>some</td>
<td>data</td>
</tr>
<tr>
<td>more</td>
<td>data</td>
</tr>
</table>
</body>
</html>
--
Unemployed English Java programmer
http://jroller.com/page/tackline/