我有一个使用JTextArea作为其TableCellRenderer的JTable,因此表格单元格可以使用自动换行.JTable显示正常.当我通过JTable的打印方法将表打印到打印机时,输出总是截断大约60%的数据.我尝试过不同的计算机和不同的打印机,以及不同的打印机驱动程序,不同的JVM版本(1.5,1.6),但这些都没有帮助.下面是一个自包含的Java主类,可以重现该问题.有任何想法吗?
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTextAreaJTableTest extends javax.swing.JFrame {
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JTextAreaJTableTest frame = new JTextAreaJTableTest();
frame.setSize(640, 480);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
JButton jButtonPrint;
JScrollPane jScrollPane;
JTable jTable;
JToolBar jToolBar;
public JTextAreaJTableTest() {
initComponents();
DefaultTableModel dtm = (DefaultTableModel) jTable.getModel();
Vector<Vector<String>> data = new Vector<Vector<String>>();
for (int i = 0; i < 50; i++) {
Vector<String> rowData …
Run Code Online (Sandbox Code Playgroud) 我正在使用Microsoft命令行实用程序执行任务。我认为,实用程序的功能及其执行的任务的具体细节相对来说并不重要。这很重要:
命令行实用程序将文本发送到控制台窗口。尽管我尝试了所有可以通过研究找到的方法,但是我无法弄清楚如何将文本重定向到文件。似乎该实用程序正在使用一些奇怪的OS函数调用,从而导致以不受常规重定向方式约束的方式来打印文本。我正在使用Windows 7 cmd.exe控制台窗口。
这些构造都没有重定向有问题的文本输出:
util.exe >log.txt
util.exe 2>err.txt
util.exe >log.txt 2>&1
util.exe 1>log.txt 2>err.txt
util.exe 1>log.txt 2>err.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt
Run Code Online (Sandbox Code Playgroud)
对最后一个感到困惑吗? 事实证明,在Windows-land中有10个输出流,但这也没有完成任务。
我可以使用控制台窗口的“编辑”>“标记选择并复制”功能来复制文本,但是我需要以无头方式捕获该程序的输出,以便使其自动化。
我找不到任何专门绕过重定向打印到控制台的OS函数调用。是否存在这样的功能?该实用程序如何设法规避重定向?我可以使用什么方法来捕获该实用程序的输出?
我还尝试了DbgView,认为可能包含输出消息,但没有。
该实用程序不是图形实用程序。很显然,这是一个文本模式程序,可能是用C或C ++编写的。它是由Microsoft编写的。
我只是想知道,编译器使用什么实际上更有效?
if (condition) {
return something;
} else {
dosomething();
}
Run Code Online (Sandbox Code Playgroud)
要么
if (condition) {
return something;
}
dosomething();
Run Code Online (Sandbox Code Playgroud)
我知道这些是非常低的差异,应该选择更易读的版本,但是我们只能说我们将执行这个代码十亿次,哪一个会更有效?
我也知道在"现实世界"中根本没有任何收获,但我只是好奇.