• ベストアンサー

文字をドラッグし配列にいれたい

zozyの回答

  • zozy
  • ベストアンサー率60% (20/33)
回答No.1

AWT,swingにテキストボックスというコンポーネント(ボタンなどの部品)は存在しません。 最低限調べてから質問しましょう↓ http://java.sun.com/javase/ja/6/docs/ja/api/index.html そもそも、なんの言語を使うのかすら不明です。 そして、文字を配列に格納してからどうしたいのでしょうか? コンボボックスに選択された文字を挿入し、表示選択できるものをswingで作ったので参考にしてください。 //importを一個ずつ宣言してるのはメモリ節約のため import java.awt.BorderLayout; import java.awt.Font; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.WindowConstants; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; public class DraggedString extends JFrame{ JTextArea textArea=new JTextArea(); JScrollPane scroll=new JScrollPane(); JComboBox comboBox=new JComboBox(); //ドラッグ&ドロップで取り出した文字を格納する String[] log=new String[Short.MAX_VALUE]; //logの現在の要素番号 int index=0; public DraggedString(){ //これがないと×ボタンを押してもアプリケーション自体は終了しない setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //テキストエリアの表示サイズを確保(10文字*10行分) textArea.setColumns(10); textArea.setRows(10); //textAreaで使用するフォントの指定 textArea.setFont(new Font("MS UI Gothic",1,24)); //このようにすると抽象メソッドを全てよばなくてもよく //コンポーネントごとにイベント処理を独立させることができる textArea.addCaretListener(new CaretListener(){ //テキストに変化があったらイベント発生 public void caretUpdate(CaretEvent evt){ textAreaCaretUpdate(evt); } }); //コンポーネントを指定してビューポートを作成 //textAreaはscrollの下位コンポーネントになる scroll.setViewportView(textArea); //ボーダーレイアウトでコンポーネントを配置 getContentPane().add(comboBox,BorderLayout.PAGE_START); getContentPane().add(scroll,BorderLayout.CENTER); //コンポーネントの位置をみて推奨サイズに設定してくれます pack(); } private void textAreaCaretUpdate(CaretEvent evt){ //ドラッグ&ドロップで指定した文字列が空でなかったら if(textArea.getSelectedText()!=null){ //logに指定した文字列を格納 log[index]=textArea.getSelectedText(); //次の要素を参照する index++; //コンボボックスのアイテムをlogに設定する comboBox.setModel(new DefaultComboBoxModel(log)); } } public static void main(String args[]){ new DraggedString().setVisible(true); } }

hiro0825
質問者

お礼

解答ありがとうございます。 焦って質問してしまいました。 javaで作ります。 最終的に作ろうとしているものは文章を入力し、表示し、入力指定した文章から指定した文字列同士を意味を持たせて線で結びます(AとBは同じ意味等、判別できればよい)。さらに指定した文字列を線で引かれた意味別に配列に格納します。 その後格納された配列から別の文字列操作する予定です。そこまでをどうするか悩んでいます。 文字の入力や意味を持たせて線をもたせる等の操作は作れるのですが、同一画面でとなるとどうすればよいか全く思いつきません。

関連するQ&A

  • 文字列の配列

    文字列の配列 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 のようにIPアドレスが一行に一つづつ書き込まれたテキストがあります。 ここから、それぞれのIPアドレスを文字列として配列に書き込みたいのですが、どうしたらよいのでしょうか。 IPアドレスの数だけ配列を始めに宣言して、それぞれに書き込んでいくのでは手間がかかりすぎてしまいます。 単純に数値の羅列なら scanfを使い、配列に格納できるのですが、文字列になるとどうしたらいいのかわかりません。 よろしくお願いいたします。

  • テキストファイルから文字列を読み込んで二次元配列に格納するには

    毎回お世話になっています。 ただいまC言語を勉強中の学生です。 基本的な文法は頭に入れたつもりでしたが、まだポインタと ファイルの入出力に苦手意識があり 実際うまくできないでいるので どなたか ご存知の方にアドバイスいただければと思って書き込ませていただきます。 今回練習しているのは 先に述べたように、テキストファイルに abc def ghi jkl などと文字列を書いておき、そのファイルを読み込んで 二次元配列に格納したいのですが、何を勘違いしているのか、 うまく実現できません。 参考書などを見て 一次元配列へ格納する場合は できたようなのですが、今後このプログラムを発展させる段階で 二次元配列に文字列を 格納できたほうが好都合なので 今模索しています。。。 ちなみに 一次元配列に格納する場合は 以下のように書きました。 #include<stdio.h> #include<stdlib.h> main() { char a[10]; FILE *fp; fp = fopen("word.dat", "r"); if (fp == NULL) { printf("File does not exist.\n"); exit(1); } while(fscanf(fp,"%s",a)==1){ printf("%s\n",a); } fclose(fp); return 0; } 実はコレに関しても分からない点があり、それは 目的の配列変数 a[]に格納できたのだから それを確認したいと思い printfで a[0]~a[10]を表示してみようとしたところ 変に文字化け したものが表示されたり、何も表示されなかったり よく分からないことが起きます。私は何を勘違いしてしまっているのでしょうか(>_<) 長々と書いてしまいましたが、今回 御教授いただきたいのは (1)、テキストファイルから 英字の文字列を読み込んで二次元配列に格納するために用いるのに 一番最適な関数はどれか(fscanfやfgetsなど) そして、その関数を使って 一番シンプルな記述をするにはどのように記述すればよいのか (2)、上のようなプログラムの書き方で、配列aにテキストファイルから読み込んで格納できたようなのに、a[0]~a[10]をprintfしたときに うまく中身が表示されないのはなぜか。 という点なのですが、(1)をとりあえず急いでおりますので、(2)はおまけ程度に考えていただければと思います。 なぜかファイルの入出力がいまだに把握できなくて苦手としておりますので、どうか よろしくお願いいたします。

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

  • 配列

    あいうえお  の最初の文字(あ)だけをポインタ配列に格納して出力するというプログラムがどうしてもできません。 最初の文字をってところをどうやったらよいのかわからないので教えてほしいです。 おねがいいたします。

  • 配列にある文字列を1つの変数に改行付きで格納する方法

    配列にある文字列を1つの変数に改行付きで格納する方法 Array ( [0] => レタス [1] => トマト [2] => きゅうり ) などの配列を $yasai 変数へ ------ レタス トマト きゅうり ------ と格納してテキスト表示させたいのですが、どのようにすれば可能でしょうか? そもそも可能なのでしょうか?ご存知の方、いらっしゃいましたら宜しくお願いします。

    • ベストアンサー
    • PHP
  • 【C#】ドラッグ&ドロップについて

    前にも質問したのですが、行き詰まったのでもう一度質問します。 (1)リッチテキストボックスにテキストファイルをドラッグ&ドロップする。 (2)そのテキストファイルの内容をリッチテキストボックスに表示する。 というプログラムを作っています。 このうち(1)についてはほぼ解決したのですが、(2)についてはさっぱりです。(つまり、DragDropイベントの部分がわかりません。) どなたか教えて下さい。

  • 配列等へのアクセスについて

    プログラム初級者です。 普通配列などへデータを格納するときはインデックスを使って、取り出す時もインデックスを使うと思いますが、一意の文字列をキーとしてデータの格納、取り出しをするような方法はないでしょうか?

    • ベストアンサー
    • Java
  • 文字列と文字列をつなげるには

    下記のようにプログラムを作りました。 簡略しているのでわかりづらいと思いますが、 文字の配列と文字の配列を文字の配列に格納したいので、 下記のように$arrayに”.=”として文字列を加えて いますが、うまくいきません。 どのようにしたらいいのでしょうか? ご教授お願いいたします。 while($text[$i] != ""){ if($i==1){ $array[$j] = $feild[$j]; $array[$j] .= " "; $array[$j] .= substr($text[$i], $no, $pos); } }

    • ベストアンサー
    • PHP
  • ファイル内の文字を配列に格納

    ファイル内の文字列をも表示させた上で、文字列を配列に1つずつ格納したいのですが、とっても簡単な方法で教えてください。 ファイル名は「abc」で配列名は「moji」でお願いします。

  • Accessのフォーム内、テキストボックスで文字をドラック&ドロップで移動させることはできるのでしょうか?

    Access2000~2003でフォーム入力画面のテキストボックスで、入力した文字列を移動させたいとき、ワードと同じようにドラック&ドロップで文字を移動できるようにするプロパティの設定は可能でしょうか? また、プロパティ以外で方法はあるのでしょうか?お教え下さい。 よろしくお願い致します。