2016-05-20 13 views
0

私が取り組んでいるプロジェクトでStyledEditorKitを使用しています。私はStyledEditorKit.BoldAction()とStyledEditorKit.ItalicAction()を使用しました。今度は、StyledEditorKit.UnderlineAction()も使用したいと思います。StyledEditorKit.UnderlineAction()の適切な実装

私は、彼らがで使用されますJButtonが行います

JButton bold = new JButton(new StyledEditorKit.BoldAction()); 
    tool.add(bold); 
    JButton italic = new JButton(new StyledEditorKit.ItalicAction()); 
    tool.add(italic); 
    JButton underline = new JButton(new StyledEditorKit.UnderlineAction()); 
    tool.add(underline); 

は、彼らはそれぞれが、私は(null)をのsetTextし、ボタンにアイコンを割り当てる独自に使用しています。次に、AbstractActionでこれらのボタンを使用しようとするとき:

Action Bold = new AbstractAction("Bold", new ImageIcon("bold.png")) 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      if(bolded == false) 
      { 
       area.setFont(area.getFont().deriveFont(Font.BOLD)); 
       bolded = true; 
      } 
      else 
      { 
       area.setFont(area.getFont().deriveFont(Font.PLAIN)); 
       bolded = false; 
      } 

     } 
    }; 

Action Italic = new AbstractAction("Italic", new ImageIcon("italic.png")) 
{ 
     public void actionPerformed(ActionEvent e) 
     { 
      if(italiced == false) 
      { 
       area.setFont(area.getFont().deriveFont(Font.ITALIC)); 
       italiced = true; 
      } 
      else 
      { 
       area.setFont(area.getFont().deriveFont(Font.PLAIN)); 
       italiced = false; 
      } 
     } 
}; 

Action underline = new AbstractAction("underline", new ImageIcon("underline.png")) 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     if(underlined == false) 
     { 
      area.setFont(area.getFont().deriveFont(Font.UNDERLINE)); 
      underline = true; 
     } 
     else 
     { 
      area.setFont(area.getFont().deriveFont(Font.PLAIN)); 
      underline = false; 
     } 
    } 
}; 

最初の2つのAbstractActionが正常に機能します。私が使用する最後のもの

area.setFont(area.getFont().deriveFont(Font.UNDERLINE); 

しかし、これは正しくありません。私は実際にoracle上の実際の実装を見つける必要がありませんが(間違った場所を探していますか?)、私はそれが間違っている 'UNDERLINE'を使用している方法であると考えています。私が知っている簡単な答え。どんな助けもありがとうございます。

+2

私は理解できません。 StyledEditorKit.BoldActionを使用している場合、なぜあなた自身の大胆なアクションを記述する必要がありますか? 「AbstractActionでこれらのボタンを使用する」とはどういう意味ですか?アクションはボタンを使用しません。アクションを使用するボタンです(最初のコードブロックが正しく動作しているため)。 – VGR

答えて

0

私はそれを理解しました。ええ、コードの後半は完全に不要です。

ボタンの作成で呼び出されたStyledEditorKitは、それを動作させるために必要なものでした。その2番目のAbstractActionを実装しようとしていたとき、他の2つのAbstractActionで起こっていなかったことが起こっていました。 私は印象に残っていましたが、まだテキストを太字にするために大胆なアクションを作成する必要がありましたが、Javaは自動的にStyledEditorKitでそのすべてを処理します。

関連する問題