2016-04-25 2 views
0

は、私はNetbeansのからの私のJava Swingのアプリを実行したときにフォントが異なって見える気づいたと私は私のCからjarファイルとしてそれを実行すると:私は瓶のアプリで使用されるフォントを言われたシステム上でJava Swingアプリケーションで使用されているフォントを見つけるにはどうすればいいですか?

のWindows 7上のドライブから来ますシステムでは、Netbeansから実行したときにフォントと違って見えるので、IDEとユーザーの視点からアプリケーションの外観を一貫して保つために、Netbeansからアプリケーションに読み込まれているフォントを見つけて、私のjarアプリの一環としてそれらをパッケージ化すると、これは実現可能ですか?もし私がそれらを私のアプリにコピーしたら、私のアプリの中にそれらをロードする方法は?ここで

は、コードや画像です:

import java.awt.*; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import javax.swing.*; 

public class Test_JPanel extends JPanel 
{ 
    public static final long serialVersionUID=26362862L; 
    static Dimension Screen_Size=Toolkit.getDefaultToolkit().getScreenSize(); 
    Thread Empty_JPanel_Thread; 

    public Test_JPanel() 
    { 
    setPreferredSize(new Dimension(300,600)); 
    String Table="<Html>\n"+ 
       " <Center><Br>\n" 
       +"Test Table<P>\n" 
       +" <Table Border=0 Cellpadding=1 Cellspacing=1 Width=286>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 1]&nbsp;&nbsp;</Td><Td>111 - AAA</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 2]&nbsp;&nbsp;</Td><Td>222 - BBB</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 3]&nbsp;&nbsp;</Td><Td>333 - CCC</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 4]&nbsp;&nbsp;</Td><Td>444 - DDD</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 5]&nbsp;&nbsp;</Td><Td>555 - EEE</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 6]&nbsp;&nbsp;</Td><Td>666 - FFF</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 7]&nbsp;&nbsp;</Td><Td>777 - GGG</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 8]&nbsp;&nbsp;</Td><Td>888 - HHH</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[ 9]&nbsp;&nbsp;</Td><Td>999 - III</Td><Td></Td></Tr>\n" 
       +"  <Tr><Td Width=118 Align=Right>[10]&nbsp;&nbsp;</Td><Td>000 - JJJ</Td><Td></Td></Tr>\n" 
       +" </Table>\n" 
       +" </Center>\n" 
       +"<Hr Width=100%>\n" 
       +"</Html>"; 
    JLabel aLabel=new JLabel(Table); 
    aLabel.setFont(new Font("Dialog",0,18)); 
    aLabel.setOpaque(true); 
    aLabel.setPreferredSize(new Dimension(285,413)); 
    add(aLabel); 

    } 

    static void Create_And_Show_GUI() 
    { 
    final Test_JPanel demo=new Test_JPanel(); 

    JFrame frame=new JFrame("Test_JPanel"); 
    frame.add(demo); 
    frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    } 

    public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Create_And_Show_GUI(); } }); } 
} 

enter image description here

+3

* "私は、Jarsアプリケーションで使用されるフォントはシステムから来ていると言われていたので、Netbeansから実行するとフォントと異なって見える" *私の知る限り、***すべての*** Javaフォントがロードされていますローカルシステムから。 2つの表現の間にある可能性が最も高いのは、異なるフォントを選択するPLAF、またはフォントをレンダリングするさまざまな方法(アンチエイリアスなど)です。もっと早く助けを求めるには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。さて、基本的なデバッグでどのようなフォントを発見しましたか?フォントフェイス情報を表示するコードをMCVEに追加します。 –

+0

Javaランタイム(JRE)は、[Lucidaフォントの3つのファミリのいずれかを含む](http://docs.oracle.com/javase/8/docs/technotes/guides/intl/font.html)に加えて、ホストOSに属するフォント。 –

+1

なぜ気になるのですか?レイアウトマネージャと論理フォントファミリを使用してください。[here](http://stackoverflow.com/a/7189029/230513) – trashgod

答えて

0

これは私が私の質問に探していた答えではないが、これは問題が修正を取得するための答えです。私は、問題は、フォントの違いについては少ないが、HTMLテーブルの間隔については、私はJarで実行するときに "Cellpadding = 1"を "Cellpadding = 0"に置き換え、問題を解決しました。

私のアプリは、IDEから実行した場合、またはJarから実行した場合、Jar、Cellpadding = 0で実行すると、2つの状況で同じように見えるようにします。

これは私のアプリではなくJava側から修正されることを期待しています。

関連する問題