javaプログラム作成について

このQ&Aのポイント
  • javaを使用して自由なプログラムを作成したいと考えています。主にお絵描きソフトのようなプログラムで、文字入力や矢印などを使用する予定です。作成に必要な書籍やサイトを教えていただけると幸いです。
  • 現在はC言語を学んでいますが、JAVAでのみ使用する知識が曖昧です。基本的な知識は書店で入手することができますが、具体的な作成方法がわからず困っています。参考になる書籍やサンプルプログラムがあれば教えていただけると助かります。
  • 質問としては、簡単なお絵描きソフトの作成方法について教えていただけると嬉しいです。書籍やサイトなど、参考になる情報を提供していただけるとありがたいです。
回答を見る
  • ベストアンサー

文字、矢印等自由に書けるjavaプログラムを作りたい

javaで以下のようなプログラムを作ろうと思っています。その際に必要な書籍、サイトがあれば教えていただけませんか? 卒論にあたるので1月中に作り終える予定です。指導教師に聞くのが最もですが、年末でということで連絡が付かず質問します。 イメージとしてはお絵描きソフトと思っていただけたら大丈夫です。ただフリーで書くのではなく、文字入力ボタンや矢印など基本的に与えられた方法での入力のみと考えています。ただ書いた文字等はドラッグで移動できるようにしたいです。さらに書いた文字、矢印一つ一つ意味を持たせるつもりです。この矢印は[1]もしくは[2]の意味など。 今の知識としたらC言語はできますが、JAVAでのみ使う知識(Cで使わない知識)は曖昧です。 基本知識に関することはどこの書店でもありますから問題ないのですが、実際にどのように創り出せばよいかわからず困っています。サンプルプログラムがあれば参考にしていきたいと思っています。ですが見つからず困っています。 質問としては、簡単なお絵描きソフトを作りたいのですが参考になる書籍、サンプルプログラムがある書籍やサイト等なんでも構いませんので教えていただけたらと思います。 よろしくおねがいします。

  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

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

まず、AWTとSwingの長所をあげていきます Swing ・コンポーネント(ボタンやラベルなどの部品)関係がよくサポートされており、なおかつAWTに比べてコンポーネントの処理が軽いです ・コンポーネントへの描画処理が優れている 故に、コンポーネントを多く利用する場合こっちがオススメです AWT ・画面への描画処理が優れている ・イベント処理(キーを押した、マウスをドラッグしたなど)に対する、再描画が高速(これが今回の決め手) ・システム側、アプリケーション側の両方が描画処理を行うので柔軟な描画処理が行われる 描画処理を主とするのなら断然こっち 以上のことをふまえた上で考えると、今回のアプリケーションはコンポーネントのサポートより、描画処理を重視すべきと考えたのでAWTにしました。 そもそもJavaにはオブジェクト指向というものがあり以下のような利点があります。 ・クラス間のセキュリティが強力(カプセル化といい、別のクラスからデータを勝手にアクセスできないようにできます)なため独立性がある つまり、機能や処理でプログラムをわける設計構造になります ↓ 機能ごとにわけるので機能の変更や追加にも強い ・ソースの再利用性が高い(別のクラスの機能も必要に応じて呼び出せます) つまり、同じ処理を書く必要は一切なくなります ということですので、Javaをやる際はオブジェクト指向の理解を深めることをオススメします

hiro0825
質問者

お礼

返事が遅れて済みません。 違いがなんとかわかりました。オブジェクト指向というのはよく聞き、利点もわかります。ですがまだ理解にはほど遠いような気がします。 また質問することがあると思います。 ありがとうございました。

その他の回答 (1)

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

AppletやAWT(Swingというものもあるが、今回は向かないので却下)といったものを使えばできると思われます。 Javaをやる際にはまず↓をブックマークするとよいでしょう http://java.sun.com/javase/ja/6/docs/ja/api/index.html Javaにはライブラリで様々な機能が元から備わっています。(AppletやAWTもその一部です)上記のページにはその一覧が載っています。 下記に自分が書いたサンプル(ひらがな50音を描画するプログラム)がありますので、それをまじえてキーをタイプすると文字を入力するプログラムの説明をしたいと思います。 (本当は機能ごとにクラスで分けたほうがよいのですが、C使いの方には慣れないことなので単一クラスで書いてあります) Javaの文法、構造などには疑問を持つと思われますが、回答の文字数に限りがあるので質問は別途受け付けます。 import java.applet.Applet; import java.awt.Font; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class Oekaki extends Applet implements KeyListener{ //ひらがなが格納された文字型の配列 String[][] str={{"あ","い","う","え","お"}, {"か","き","く","け","こ"}, {"さ","し","す","せ","そ"}, {"た","ち","つ","て","と"}, {"な","に","ぬ","ね","の"}, {"は","ひ","ふ","へ","ほ"}, {"ま","み","む","め","も"}, {"や","い","ゆ","え","よ"}, {"ら","り","る","れ","ろ"}, {"わ","うぃ","う","うぇ","を"}}; //実際に描画する文字列(配列なのは改行を実装するため) String[] paintStr=new String[10]; //xとyはカーソルの位置.boin,siinはstrの要素 int x=0,y=0,boin=0,siin=0; //書き込んでいいか悪いかのフラグ boolean write=false; //アプレットの初期化をするメソッド public void init(){ //アプレットの画面サイズの設定 setSize(200,200); //キーリスナを登録 addKeyListener(this); //文字フォントの指定 setFont(new Font("MS UI Gothic",Font.PLAIN,20)); //描画する文字の初期化(初期化しないと描画でエラーになる) for(int i=0;i<10;i++){ paintStr[i]=""; } } //描画をするメソッド public void paint(Graphics g){ //ここでのiは行数 for(int i=0;i<10;i++){ g.drawString(paintStr[i],0,i*20+15); } g.drawLine(x*15,y*20,x*15,y*20+20); //フォーカスを設定 requestFocusInWindow(); } //キーをタイプした時の処理 public void keyTyped(KeyEvent e){ //StringBufferは文字列を操作するAPI StringBuffer sb=new StringBuffer(paintStr[y]); switch(e.getKeyChar()){ //2468は矢印キーの代わり,ifの条件は配列のオーバーを防ぐため case '8':if(y>0){y--;x=0;}break; case '6':if(x<20){x++;}break; case '4':if(x>0){x--;}break; case '2':if(y<10){y++;x=0;}break; //.は文字の消去 case '.': if(paintStr[y].length()>0){ sb.delete(paintStr[y].length()-1,paintStr[y].length()); paintStr[y]=sb.toString(); x--; } break; //配列strのsiinの参照位置を設定 case 'k':siin=1;break; case 's':siin=2;break; case 't':siin=3;break; case 'n':siin=4;break; case 'h':siin=5;break; case 'm':siin=6;break; case 'y':siin=7;break; case 'r':siin=8;break; case 'w':siin=9;break; //配列strのboinの参照位置を設定 //母音なので書き込みフラグをtrueにする case 'a':boin=0;write=true;break; case 'i':boin=1;write=true;break; case 'u':boin=2;write=true;break; case 'e':boin=3;write=true;break; case 'o':boin=4;write=true;break; } if(write==true){ //insertは文字列を挿入する sb.insert(x,str[siin][boin]); paintStr[y]=sb.toString(); x=paintStr[y].length(); //strの参照位置の初期化 siin=0; boin=0; //falseにしないと無限ループ write=false; } //再描画処理 repaint(); } //使わないメソッドですが、これがないとエラーになる //(Javaのインターフェースのめんどくさいところ) public void keyPressed(KeyEvent e){} public void keyReleased(KeyEvent e){} }

hiro0825
質問者

お礼

解答ありがとうございます。 あれから色々考えているのですが、とりあえず作りながら考えて行こうかなと思っています。でもあとから作った機能を変更できるのは容易なのかなど、経験不足の自分にはわからないところもあり悩んでいます。 swingは不向きというのはどういうことなのでしょうか? applet,awt,swingの何が違うのか調べたところ曖昧にしかわからない状況です。特にawtとswingの違いが微妙です。

関連するQ&A

  • JAVAからコマンドプロンプトに文字を入力したいです(つ;)

    Javaのプログラムからコマンドプロンプトに文字を入力して(プログラムにアドレスを埋め込んでいても大丈夫です★),アプリケーションにアクセスして,そのアプリケーションから得る結果を再びJavaのプログラムに返すようなプログラムを書きたいのですが分からなくて困っています(つ;) 何かサンプルプログラムをお持ちの方いらっしゃいませんか??

  • javaのプログラムで間違い箇所が分からない。

    <<Javaサンプルプログラム集:共立出版(株)という 書籍でjavaの勉強をしています。 付属のCD-ROMのサンプルプログラムコンパイルはできるのですが、アプレット起動出来ません。 何故なんでしょう??

    • ベストアンサー
    • Java
  • DOS上でJAVAのプログラムを実行する際

    (今日から)JAVAを勉強中の者です。 ちょっと昔の参考書を見ながら、Hello!と表示するプログラムを作りました。 いざ実行しようとして、 java sample.class  と入力しても、 見つからないか、ロードできませんでした と出ました。 path や classpath 両方間違いなく変数設定されていますが、直りません。 そこで、試しに java class  と入力すると Hello! で出てくれました! 参考書のバージョンが1.5.0だから、最新の7.0.7では、 プログラムを実行する入力方法が異なる、 ということでしょうか??

    • ベストアンサー
    • Java
  • これからJavaの勉強をしたいのですが・・・

    これからJavaの勉強をしたいのですが、わからないことが2つあります。 (1)Javaをするには、ソフトをパソコンにインストールしないといけないのでしょうか? (2)プログラム言語でVBは少しだけ経験があるのですが、CやC++は全然経験がありません。初心者が参考になるようなHPや書籍がわかりません。 もし、わかる方がいらっしゃったら、ご教示お願いします。

    • ベストアンサー
    • Java
  • Javaを1から始めるにあたって

    ソフト、Web系のSEをやっております。 一応C言語、PHPなどは人並み以上には使えます。 Javaを1から始めるにあたって参考になる いい書籍はありませんか。 (例えば、Javaの環境を構築する手順、コンパイル方法、クラス、など初心者にもってこいの書籍、またはサイトがあればなおうれしいですね) よろしくお願いいたします。

  • JAVAのとっかかりに参考になるサイト

    JAVAをはじめるにあたって、初心者が参考にできるサイトがあれば教えてください。 できたら・・・インストールから実際にサンプルプログラムを作るまで・・・といった具合に、詳細な解説があればとてもありがたいです。 自分が探したのだと、ダウンロード先と、サンプルプログラムの紹介、といった内容が多く、その中間の解説がみつけられないので、環境も作れず、おろおろしてます。(素直に書籍を買えばいいのに)

    • ベストアンサー
    • Java
  • シェアウェアプログラムを作りたいと考えておりますが、

    シェアウェアプログラムを作りたいと考えておりますが、 参考になる書籍又はサイトを教えてください。 開発はC#かVBかJAVAを予定してます。

  • Javaプログラムのエラー

    練習を始めて間もなく、エラーの改善策がよく分からない為、お力を貸して頂けないでしょうか? 【質問】 以下のプログラムを作成し、(現在手持ちのPCの調子が悪いので) Web上の「ideone」 http://ideone.com/ というサイトで実行しました。 すると、以下のようなエラーが表示され、意味を検索した所まではいいのですが、 二行目中カッコ直前の単語はともかく、別にサイト上でプログラム名を打ち込む所は無いですから、 改善策がよく分からず困っています。ですので2点教えて頂けると幸いです。 (1) どうすればエラーを解消できるか改善策 (2) その場合、実行結果はどのように表示されるか (後で私も確認しますが一応念のため) ※なお、別のプログラムを実行した際には、問題なく動く事を確認済です。 【作成したプログラム】 import java.io.*; public class SampleProgram { public static void main(String args[]){ for(int i = 1; i >= -1; i--){ try{ System.out.println(10/i); } catch (Exception e){ System.out.println("caught"); } } } } 【エラー内容】 Main.java:2: error: class SampleProgram is public, should be declared in a file named SampleProgram.java public class SampleProgram { 参考までにエラー画面のスクリーンショットを貼っておきます。 http://upup.bz/j/my21850aUiYt8quvIuFL7WE.jpg 【エラーの意味】 (説明1) http://dolphin.c.u-tokyo.ac.jp/~fukush9/TA/ より引用。 class sample1 is public, should be declared in a file named sample1.java public class sample1 { 一行目の中カッコの直前の単語と、ファイル名(.javaの前)を、大文字小文字まで含めて全く同じ名前にしましょう。 (説明2) 出典不明。手持ちの紙資料より。 プログラム名とファイル名が異なっていないか?

    • ベストアンサー
    • Java
  • java 外部プログラムの実行

    いつもお世話になっています。 タイトルのとおり外部プログラムの実行方法についてです。 現在プログラムAを実行するとプログラムBが実行されるプログラムを作成できないかと考えています。 少し調べてみたところ外部プロセスの実行がそれにあたるかと思うのですが、ネット上にあるサンプルプログラムを実行してみてもコンパイルこそできるものの実行がエラーになってしまいます。 以下のサイトを参考にしていますが、サンプルにある通りのメモ帳の実行は出来ますが,javaプログラムの実行はできない状態です。 http://syunpon.com/programing/java/sample/execute.shtml 私の考えているようなことはjavaで実装可能なのでしょうか? ご存知の方おられましたらご教授お願いします。

    • ベストアンサー
    • Java
  • JAVAで作るプログラムとは

    HPに使うJAVAスクリプトの勉強をしたく、JAVAとスクリプトは違う事を知らずにJAVAの通信教育を申し込んでしまいました。 JAVAはサーバー側のプログラミング言語で、 スクリプトはクライアント側のスクリプト言語でブラウザ上で動作する。 申し込んだものは仕方ないので頑張ってJAVAを理解したいと思うのですが、 ネット上のJAVA講座を見ると最初にJAVAをインストールするとあります。 これはJAVAを作成するソフトのようなものですか? JAVAで作るプログラムとはOSのようなものですか? JAVAでプログラムを作ってHPの更新やスクリプトが作成できるのですか? そもそもJAVAで作るプログラムとはどのように利用するのか、 プログラムの意味がよく分かりません。 JAVAとスクリプトの違いはもう良いのでプログラムについて 分かりやすく教えてください。

    • ベストアンサー
    • Java

専門家に質問してみよう