gooドクター有料プランが1ヶ月間無料!

キャレットの幅を設定したい。

以下のソースで色を設定するメソッドはありますが、
キャレットの幅の設定の仕方が解りませんでした。
ご存じの方がおられましたら教えてください。

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
class test extends JFrame{
public static void main(String args[]){
new test();
}
test(){
this.setSize(300, 250);
JPanel p = new JPanel();
JTextArea area2 = new JTextArea("test", 10, 10);
area2.setCaretColor(Color.RED);

p.add(area2);

this.add(p, BorderLayout.CENTER);
this.setVisible(true);
}
}

gooドクター

A 回答 (1件)

 こんにちは。



 確かに APIのドキュメントには何の記述もないですね。
 私もわからなかったので、Swing のソースコードをたどっていったら、わかりました。

(コンパイルするときは、全角スペースを半角スペースに変換してからにしてください)

public class Test extends JFrame {
  public Test() {
    setSize(300, 250);
    JPanel p = new JPanel();
    JTextArea area = new JTextArea("test", 10, 10);
    area.setCaretColor(Color.RED);

    //キャレットの幅を設定
    area.putClientProperty("caretWidth", Integer.valueOf(3));

    //キャレットの幅を縦横比で設定することもできるみたい
    //area.putClientProperty("caretAspectRatio", Float.valueOf(0.2F));

    p.add(area);
    add(p, BorderLayout.CENTER);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        Test test = new Test();
        test.setVisible(true);
      }
    });
  }
}

 JDKに付属している、Java のソースコードは、チョー勉強になりますよ。
 おすすめです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Javaの仕様をみて考えるということが出来る必要があるのですね。
これでAPIを理解する手がかりが見つかったような気がしました。
本当にありがとうございます。

お礼日時:2010/07/05 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング