二つのスレッドがjTextAreaへのテキスト書き込みを行うJavaアプリケーションを作っています。そこで、jTextArea内でのカーソルの移動をプログラム側で制御したいのですが、カーソル移動の方法がわかりません。A、Bのスレッドがあるとして、Aはキーボードからの入力を表示する。ここでは入力位置にカーソルがあるので問題ありませんが、Bのスレッドがテキストをappend()した場合、append()されたテキストの文末にカーソルを移動したいのです。現状ではカーソルはキーボード入力された文末に留まったままになり、矢印キーでappend()されたテキスト分移動させなくてはなりません。これではさすがに操作性が悪すぎますし、かっこ悪いですよね。どなたかカーソルの操作方法をご存知でしたら教えていただけないでしょうか。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

javax.swing.text.JTextComponent クラスの



setCaretPosition(int position)メソッド

ではダメですか?

実際プログラミングしていないので自信ないですが、APIドキュメントを見るとできそうです。

参考までに。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。お礼が遅れて申し訳ありませんでした。
このメッソドを使うには、先にテキスト全体のテキスト量を取得して、それをpositionとしてカーソルを文末に飛ばす、ということですね。さっそく試してみます。

お礼日時:2001/10/15 18:10

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q子ウィンドウを閉じるとき、親ウィンドウのテキストボックスにカーソルを移動したい。

子ウィンドウを閉じるとき、親ウィンドウのテキストボックスにカーソルを移動したい。(java)
<script>
function openChild(f){
window.open("child2.htm","_blank");
}
</script>
<form>
<input id="text1"><br />
<input id="text2"><br />
<input type="button" onclick="openChild(this.form)" value="子ウィンドを開く">
</form>

子ウィンドを閉じる
<input type="button" onclick="window.close()" value="閉じる">

親ウィンドウのテキストボックス(id="text2")にカーソルを移動したいのですが。

<input id="text2"><br />

Aベストアンサー

・ タブブラウザでないIEの場合ですが、

child2.htm
------------------------------------------------------------

<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
function closeThis() {
window.opener.document.getElementById("text2").focus();
window.close();
}
//-->
</script>
</head>
<body>
<form>
<input type="button" onclick="closeThis()" value="閉じる">
</form>
</body>
</html>

QFirefoxでテキストボックスからボタンにカーソル移動したい。

テキストボックスからEnterキーでボタンにフォーカスを移したいと思い以下のように記述しました。
IEでは動作したのですがFirefoxでは動きません。いろいろ調べてevent.keyCodeが使えない場合があるというようなことがわかり、いろんなところからサンプルを引っ張ってくっつけたのですがうまくいきません。
1.どこがいけないのか
2.どうしたら動くのか
を教えてください。参考になるURLでもかまいません。よろしくお願いします。

<input id="comment" size="80" onkeypress="return myKeyPress(event);" type="textbox">
<input id="insertButton" onclick="test()" type="button" value="コメント">

function myKeyPress(event){
 var strUA = "";
 strUA = navigator.userAgent.toLowerCase();
 if(strUA.indexOf("firefox") != -1){   //ブラウザの判定
  var browser=0;
 }else if(strUA.indexOf("msie") != -1){
  var browser=1;
 }
 if(browser==0){ //firefox用
  if(event.charCode == 13){
   document.getElementById("insertButton").focus();
  }
 }else{ //IE用
  if(event.keyCode == 13){
   document.getElementById("insertButton").focus();
  }
 }
}

テキストボックスからEnterキーでボタンにフォーカスを移したいと思い以下のように記述しました。
IEでは動作したのですがFirefoxでは動きません。いろいろ調べてevent.keyCodeが使えない場合があるというようなことがわかり、いろんなところからサンプルを引っ張ってくっつけたのですがうまくいきません。
1.どこがいけないのか
2.どうしたら動くのか
を教えてください。参考になるURLでもかまいません。よろしくお願いします。

<input id="comment" size="80" onkeypress="return myKeyPress(event);" ty...続きを読む

Aベストアンサー

ちなみにこんなのはどうでしょう?
ボタンはSHIFT+ENTERになります!
ほかでは、ユーザーインターフェースを変えるべきではない!と
怒られますが、ここの板では攻撃する人が少ないようなので・・・
enterをtabに変えるものを以前は使ってました。
このことについては、他の方の意見も聞いてみてください

<html>
<input type="text"><br>
<input type="hidden">
<input type="radio" name="a">A /
<input type="radio" name="a">B (カーソルで)<br>
<input type="button" value="SHIFT+ENTER" onClick="alert('ok')"><br>
<input type="checkbox">スペースキーで<br>
<script>
document.body.onkeypress = nextFocus;
function nextFocus(e){
var obj = e ? e.target: event.srcElement;
var evt = e ? e: window.event;
switch( evt.keyCode ){
case 13:
if(evt.shiftKey && ( obj.type == 'button') || ( obj.type == 'reset' ) || (obj.type=='submit') )return;
var elms = document.getElementsByTagName('input');
for( var i=0, m=elms.length; i<m; i++){
if( elms[i] == obj ){
do{ i=(++i)%m; }while(elms[i].type=='hidden')
elms[i].focus();
return false;
}
}
case 27: obj.blur(); break;
}
}
</script>
</body>
</html>

ちなみにこんなのはどうでしょう?
ボタンはSHIFT+ENTERになります!
ほかでは、ユーザーインターフェースを変えるべきではない!と
怒られますが、ここの板では攻撃する人が少ないようなので・・・
enterをtabに変えるものを以前は使ってました。
このことについては、他の方の意見も聞いてみてください

<html>
<input type="text"><br>
<input type="hidden">
<input type="radio" name="a">A /
<input type="radio" name="a">B (カーソルで)<br>
<input type="button" value="SHIFT+ENTER" onClic...続きを読む

Qテキストエリア内のカーソル位置に文字を入力する方法

複数のbuttonを使って、textarea内に順番に文字を入れていくことは出来ましたが、
途中に文字を挿入したいとき、カーソルを合わせてbuttonを押しても末尾に入力される為、
カーソルの位置に入力できるようにしたいのですが、方法(ソース)が判りましたら教えてください。

また、buttonを使って連続で入力した際、最後に入力された
文字のみ削除するbuttonの作り方も判れば教えてください。
お願いします。

ブラウザはIE8です。

Aベストアンサー

”カーソル” でけんさくしないで、”キャレット” でしらべてみれば?

Qテキスト領域に入力した値を利用して、他のテキスト領域の数を追加したいのですが。

教えてください。
現在、入力フォームを作成しています。
テキスト領域(A)で入力した数値分だけ、テキスト領域(B)の数を作成したいのですが、そのようなことは可能でしょうか?

例えば、
「OnChangeを使用して、テキスト領域(A)に数値を入力し、移動した時にテキスト領域(A)の数値分だけ、テキスト領域(B)を作成する」
といったようなことなんですが・・・。

Javascript関連のWebを見たのですが、テキスト領域の追加(挿入)といったようなことが書かれていないので、どなたかご存知でしたら、よろしくお願いします。

Aベストアンサー

innerHTMLで埋め込むかなぁ。
以下がサンプルです。

<HTML>
<BODY>
<SCRIPT>
<!--
function add()
{
var n = eval(document.form.a.value) ;
var html = '' ;
for (i=1 ;i<=n ;i++){
html += 'b'+i+'<INPUT TYPE=text NAME=b'+i+'><BR>' ;
}
document.getElementById('b').innerHTML = html ;
return false ;
}
// -->
</SCRIPT>
<FORM NAME=form>
a<INPUT TYPE=text NAME=a onChange=add();><P>
<SPAN ID=b></SPAN>
</FORM>
</BODY>
</HTML>

QJTabedpaneを使用時のカーソル操作について

お世話になっております。

JavaのSwingを使用してGUIのプログラムを作成しており、
JTabedpaneを使用してタブ化し、各タブの中にはTextAreaを
貼り付けています。

TextAreaの入力部分をキーボードの矢印キーで移動したいのですが、
JTabedpaneを使用すると、矢印キーが効きません。
(Java L&Fの仕様?)

JTabedpaneを使用しても、キーボードの矢印キーでTextAreaの中を
移動したりする設定はありませんでしょうか。

皆さんのお知恵を拝借したいです。
宜しくお願いします。

Aベストアンサー

>#2
 ありがとうございます。

 Java のバージョン 1.6.0_33の環境で、再現しました。
 Swing の JTabedpane と AWT の TextArea を混在させた場合だったのですね。
 よく見れば、質問文にも JTextArea とは、書いてありませんね。

 しかし、質問者さんは、AWT の TextAreaでなければならないのでしょうかねぇ。
 Swing もしくは、AWT で統一すれば、問題解決のような気がするのですが。


このカテゴリの人気Q&Aランキング

おすすめ情報