TopPage > Q&A

Javaプログラミング全般に関すること

コードを修正しても,修正前のプログラムが実行される.

  1. プログラムのファイル名は間違っていませんか? ファイル名を確認して,もう一度javajavacを実行してみましょう.
  2. ソースコードの保存はしましたか? もう一度保存してからjavac, javaを試してみてください.
  3. クラス名やファイル名を変更している場合:
    旧クラス名がソースコード中に残っていませんか?とくに,次の例では
    class NewClass {                                // OldClass→NewClassに書き換えた
        public static void main(String[] args){
            OldClass foo = new OldClass();          // ←まだOldClassのまま!
        }
    }
    netprogフォルダに,OldClass.classファイルが残っていると,エラーにならずに修正前(古いクラス)のコードが実行されてしまいます.

自分が使っているマシンのIPアドレスがわからない

IPアドレスを調べる方法のページを参照してください.

コマンドラインに日本語を入れる方法

コマンドラインに日本語をいれるには,[Alt]キーを押しながら,[半角/全角]キーを押すことで,日本語変換モードになります.

演習課題に関すること

演習3-2 [改良1]のテストの方法が分からない

複数のPC間での通信は,下記の方法でできます.

  1. 2台のPCを起動する(以下,PC1,PC2とします)
  2. PC1のIPアドレスを調べる(調べ方は「IPアドレスを調べる方法」を参照)
  3. PC1でサーバを起動する
  4. PC1でクライアントを起動する(IPアドレスは入力しない,もしくは[localhost]と入力)
  5. PC2でクライアントを起動する(IPアドレスは2で調べたPC1のIPアドレスを入力する)

最終課題作成に関すること

クライアントからサーバに接続すると,サーバがメッセージを受信し続ける(永久ループ)状態になる

おそらく,クライアントの受信ループを突然終了させている可能性が高いです.

public class MesgRecvThread extends Thread {
  :
 public void run() {
   :
   while(true) {
     String inputLine = br.readLine();
     if (inputLine != null) {  // ★
        :
       if(cmd.equals("MOVE")){
             :
         :MOVEの処理
             :
           }  // 続けてelse if(別の命令)を書いてもよい
     }else{  // ←このelseは,★のif文に対応している!
       break;
     }
   }
  socket.close();
 }

★印のif文とelse文の対応に注目してください. (つまり,br.readLine()の結果がnullの場合に,whileループをbreakします)

whileループをbreak(終了)すると,socket.close()の行で,サーバとの接続を閉じてしまいます. 一度接続を閉じると,対戦相手との通信ができなくなるほか,サーバ側にもnullメッセージが飛ぶため,サーバの暴走につながるようです.

※コードを読みやすくするために,[Tab]キーを使って,きちんと字下げをすることをお勧めします.

タイトル画像など,ボタン以外の画像を貼りたい.

画像を使ったボタンを生成する時は,JButton型を使用していましたが,クリックする必要のない画像の場合はJLabel型を使用します. あとは,setBoundsなどを使用して場所の移動などを行ってください.

以下に使い方の例を示します.

ImageIcon titleImage = new ImageIcon("title.jpg");//タイトル画像
JLabel titleLabel = new JLabel(titleImage);//ラベルを生成
c.add(titleLabel);//ペインに貼り付ける
titleLabel.setBounds(0, 0, 200, 100);//(x座標,y座標,xの幅,yの幅)

Javaに貼り付けた画像ファイルが表示されない.

PhotoshopやIllustratorなどで,オプションを変更して画像を保存した場合,一般的ではない画像ファイルが生成されることがあります.
Webブラウザで表示可能な画像ファイルは,おおむねJavaでも使えますので,一度Webブラウザで確認してみてください.

解決策としては,別のファイル形式(PNGなど)で保存してみてください.

また,最初に作成した画像の下に隠れていて表示されない場合があります(下記参照).

ボタンなどを前面に表示したい/他のオブジェクトの後ろに隠れる

実は,Javaアプリケーションのオブジェクトは描画順によりZ軸(奥行き)値が設定されています.
最初に描画したオブジェクトのZ軸値は0,その後は1ずつ増加します. Z軸値が大きいオブジェクトほど,奥側に配置されます.Illustratorとは逆ですね.

Z軸値を変更したい場合は,以下のContainerメソッドを参考にしてください.

int cNum = c.getComponentCount(); //コンポーネントの総数を取得する
int bIndex = c.getComponentZOrder(theButton); //theButtonのZ軸値を取得する
c.setComponentZOrder(theButton, 0); //theButtonを最前面に表示する

提出課題のプログラムが,どうしてもうまく動きません!

  • 動かないプログラムは減点対象(出席点のみ.最悪の場合0点)になってしまいます.
     下記の方法で,可能な限り手伝いますので,あきらめずにがんばってください.
    • 演習時間内であれば,吉野やTAに尋ねてください.
    • 演習時間以外には,下記の掲示板に書くと返答します.
      ※掲示板に投稿するときは,回答者が理解できるように,(エラーメッセージなどを)具体的に書いてください.
      http://www.wakayama-u.ac.jp/~yoshino/netprogbbs2004/ (2004年度から継続中)
  • ちょっとリフレッシュしたり,パソコンを再起動(or他のマシンに移る)などをすると,解決するかもしれませんよ?

レポート作成・送信に関すること

画面キャプチャの方法が知りたい

ファイルの圧縮方法が知りたい

課題メールの送信ができない.(エラーが出る)

  • プログラムのソースコード(zip圧縮ファイル)にnetprog.cmdファイルや,その他不要な実行ファイルが入っている場合,大学のウィルスチェックによりエラーメッセージが返信されてくる場合があります.
    netprog.cmdファイルを除いたzipファイルを再度作成してください.
  • 添付ファイルの合計容量を確認してみてください.容量が大きい場合,送信に失敗することがあります.

課題を家のメールから提出してもいいですか?

  • どこから,だしてもOKです.
    (学籍番号,氏名がわかるようにしてくださいね)

その他

自宅から大学のデータを取得する方法

  1. WinSCPというソフトをダウンロードする
    1. http://winscp.net/eng/download.php にアクセスする
    2. Installation packageをクリックしてダウンロードする
  2. WinSCPをインストール
    1. 最初の画面で日本語を選択すると画面UIが日本語になります.
  3. WinSCPの設定
    1. 起動する
    2. 右の「新規」ボタンをクリック
    3. ホスト名を「com.center.wakayama-u.ac.jp」に,ユーザ名に大学のアカウント(s1*50**)を入れる
      • パスワードは入力しないでください
    4. 保存をクリック→OKをクリック
  4. 大学のアカウントにログイン
    1. 先ほど作ったアカウントを選択して,下の「ログイン」をクリック
    2. 一番最初だけ警告が出ます,「更新」をクリック
    3. 大学のパスワードを入力

これで,大学のデータにアクセスできるはずです.ほしいデータをデスクトップなどにドラッグアンドドロップすれば取得できます.なお,My Documentフォルダはwindowsフォルダの中にあります.

演習ページの内容がおかしい


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   一覧 単語検索 最終更新     最終更新のRSS
Last-modified: 2019-10-03 (木) 11:48:22 (1660d)