0
我有服務器上運行的java 1.4應用程序。 我需要在創建包含它們的pdf文件之前計算字符串的寬度。 當在本地運行應用程序(在我的電腦上)它是o.k. ,但是當我在服務器上運行它,我得到一個錯誤:計算字符串寬度java 1.4
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY
variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:77)
at java.lang.Class.forName1(Native Method)
at java.lang.Class.forName(Class.java:142)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:72)
at java.awt.Font.initializeFont(Font.java:285)
at java.awt.Font.<init>(Font.java:319)
,創造該問題的代碼計算一個字符串的寬度如下:
protected static String mCutStr(String iText , int iWidthPt , int iEstimatedNumOfChars)
{
iWidthPt = iWidthPt-4; //remove padding
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform,true,true);
Font font = new Font("Times", Font.PLAIN, 9);
int textwidth = (int)(font.getStringBounds(iText, frc).getWidth());
// System.out.println("iText="+iText+"; textwidth = "+textwidth+" iWidthPt ="+iWidthPt);
if(textwidth <= iWidthPt)
return iText;
String vTestStr = iText.substring(0 , iEstimatedNumOfChars)+">>";
textwidth = (int)(font.getStringBounds(vTestStr, frc).getWidth());
while(textwidth < iWidthPt)
{
iEstimatedNumOfChars++;
vTestStr = iText.substring(0 , iEstimatedNumOfChars)+">>";
textwidth = (int)(font.getStringBounds(vTestStr, frc).getWidth());
// System.out.println("vTestStr="+vTestStr+" textwidth = "+textwidth);
}
vTestStr = iText.substring(0 , iEstimatedNumOfChars-1)+">>";
return vTestStr;
}
是否有其他的方式來calc下這不使用AWT? (它必須支持最小Java 5)
的[Java的可能的複製能」 t使用'localhost:10.0'作爲DISPLAY變量的值連接到X11窗口服務器](http://stackoverflow.com/questions/10165761/java-cant-connect-to-x11-window-server-using-localhost10 -O-作爲最值的-T) – Berger