2011-09-22 16 views
0

我怎样才能断行中的JOptionPane消息框中

<script language="javascript"> 
<![CDATA[ 
    importPackage(javax.swing); 
    importPackage(java.lang); 
    System.out.println("Hello from JavaScript!"); 
    var optionPane = JOptionPane.showMessageDialog(null,'Deployment instruction = ' + Deployment_Instrution); 
    ]]> 
    </script> 

这里Deployment_Instruction是可变的,其中我正在存储SQL SELECT查询的输出。 sql select查询长度的输出太大,所以JOptionpane消息框的大小也越来越大。为此,我想打破消息框中的大行。 我该如何做这个pls帮助[我尽快完成。 在此先感谢....

回答

1

我想你将不得不通过在适当的地方插入换行符来解决问题。对于这样一个简单的应用程序来说,只要有一个基本函数在线达到您想要的最大长度时就会在空格上打断。

是这样的:

var boxText = wrapLines(30, Deployment_Instruction); 
JOptionPane.showMessageDialog(null, boxText); 

这里的最大长度将是30个字符。随着wrapLines函数为:

function wrapLines(max, text) 
{ 
    max--; 
    text = "" + text; 
    var newText = ""; 
    var lineLength = 0; 

    for (var i = 0; i < text.length; i++) 
    { 
     var c = text.substring(i, i+1); 
     if (c == '\n') 
     { 
      newText += c; 
      lineLength = 1; 
     } 
     else if (c == ' ' && lineLength >= max) 
     { 
      newText += '\n'; 
      lineLength = 1; 
     } 
     else 
     { 
      newText += c; 
      lineLength++; 
     } 
    } 
    return (newText); 
} 

注意,这里会给出一个“破烂”右边缘,所以如果有在一行的末尾它可能不尽如人意一个很长的单词。

顺便提一下,你的变量名缺少字母'c' - 指令

+0

感谢马丁.... – picnic4u

+0

它的工作,但对于'新的条目应该是因为folows信用条款等于ICTSConfigData.plist文件的validacreditterms条目。 ********** DOCLC PARTPREP OPEN SBLC'它的打印像 'in 1 line->新条目应该是folows' '在2行 - >信用条款等于' '在3行 - > validacreditterms条目ICTSConfigData.plist' 'in 4 line-> rest all' – picnic4u

+0

这看起来比简单的句子或两个文本有点棘手。问题在于你没有任何空间可以在XML中打破。也许最好是让存储的消息中包含格式。或者你可以尝试修改wrapLines函数来分割空格或'>'字符或类似的东西 - 但这可能会非常不完美。如果你需要“漂亮的打印”XML,那么可能会出现一些问题。 –