2013年2月26日火曜日

どっかの大学の課題

課題を拾ってきて適当にやってみた。
こういうのって結構、教授とか調べてると思うんだけど。。。
http://oshiete.goo.ne.jp/qa/7965391.html
魚拓
http://megalodon.jp/2013-0226-1945-34/oshiete.goo.ne.jp/qa/7965391.html
切れててか題名がわからないけど、たぶん「3桁のクジ引きプログラム」かな?


import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

//@author aki
//2013 - 02 - 26

//抽選アプリケーション 
//仕様
//・「抽選」ボタンを出すたびに0~999までの間の数値をランダムで画面に出力する。
//・「3つの数値」「抽選」ボタンは画面中央へ「リセット」ボタンはなるべく端へ設置する。

public class Kadai001 extends JFrame {
 private JLabel numLabel[];
 private JButton cyusenB;
 private JButton resetB;
 private int[] numbox;

 //constructor
 public Kadai001() {
  super("抽選");//親クラスのコンストラクタ
  this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  setSize(300, 400);
  //仕様内容から出題者の意図を理解したところ、
  //Layoutの課題だと予測され、Layoutを多用したほうがいいと思われる。
  setLayout(new BorderLayout());

  JPanel content = (JPanel) getContentPane();
  JPanel center = new JPanel(new FlowLayout());
  content.add("Center", center);
  JPanel south = new JPanel(new BorderLayout());
  content.add("South", south);

  //variable
  Font font = new Font(Font.SANS_SERIF, Font.BOLD, 150);
  numLabel = new JLabel[3];
  for (int i = 0; i < 3; i++) {
   numLabel[i] = new JLabel(Integer.toString(i));
   numLabel[i].setFont(font);
   center.add(numLabel[i]);
  }
  cyusenB = new JButton("抽選");
  center.add("South", cyusenB);
  resetB = new JButton("Reset");
  south.add("West", resetB);

  //listener
  cyusenB.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent event) {
    Random rnd = new Random();
    for (int i = 0; i < 3; i++) {
     makeNumBox(i);
     numLabel[i].setText(Integer.toString(numbox[rnd.nextInt(100)]));
    }
   }
  });
  resetB.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent event) {
    for (int i = 0; i < 3; i++)
     numLabel[i].setText(Integer.toString(i + 1));
   }
  });
 }

 //遊び心
 private void makeNumBox(int count) {
  numbox = new int[100];
  int num1 = -1, num2 = -1;
  if (count == 1) {
   num1 = Integer.parseInt(numLabel[0].getText());
  } else if (count == 2) {
   num1 = Integer.parseInt(numLabel[0].getText());
   num2 = Integer.parseInt(numLabel[1].getText());
  } else {
   for (int i = 0; i < 100; i++) {
    numbox[i] = i / 10;
   }
   return;
  }
  Random rnd = new Random();

  //1回目,2回目に出た数字を出にくくする
  for (int i = 0, num = 0; i < 100; i++) {
   if (i / 10 == num1) {
    if (i - (i / 10) * 10 == 0) {
     num = i / 10;
    } else {
     num = rnd.nextInt(10);
    }
   } else if (i / 10 == num2) {
    if (i - (i / 10) * 10 == 0) {
     num = i / 10;
    } else {
     num = rnd.nextInt(10);
    }
   } else {
    num = i / 10;
   }
   numbox[i] = num;
  }
 }

 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  new Kadai001().setVisible(true);
 }

}

JavaでMP3を再生(2013/02/26修正)

http://akis-i.blogspot.jp/2012/09/javamp3.html
のソースコードの修正です。

以下修正内容
・変数名が気持ち悪い
・BufferedInputStreamをつかいシークを実装しようと思えばできるようにした。

問題点&いつか直す
・メソッドがきもい
・音量の調節ができない
・メモ帳でいじったからもしかしたらバグがあるかも・・・
・修正とかいっときながら雑
・変数の使い捨て前提

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.net.URL;

import javazoom.jl.player.Player;
import frame.compornent.PlayerCompornent;

public class MP3Player extends Thread {
 // variable
 private Player player;
 private BufferedInputStream stream;
 private boolean run;
 private long filesize;

 public MP3Player() {
 }


 public void setFile(String file) {
  try {
   stream = new BufferedInputStream((new FileInputStream(file)));
   player = new Player(stream);
  } catch (Exception e) {
  }
 }

 public void setFile(URL url) {
  try {
   filesize = url.openConnection().getContentLength();//ファイルサイズ取得
   stream = new BufferedInputStream((url.openStream()));
   player = new Player(stream);
  } catch (Exception e) {
  }
 }

 public void start() {
  run = true;
  super.start();
 }

 public void stopMusic() {
  try {
   if (player != null) {
    player.close();
   }
   if (stream != null) {
    stream.close();
   }
   
  } catch (Exception e) {
   System.out.println("IOException");
  } finally {
   setStopper();
  }
 }

 public void setStopper() {
  player = null;
  stream = null;
  run = false;
 }

 public void run() {
  if (stream == null || player == null || !run) {
   stopMusic();
  } else {
   try {
    player.play();
   } catch (Exception e) {
    System.out.println("JavaLayerException");
   } finally {
    stopMusic();
   }
  }
 }

 public boolean isRun() {
  return run;
 }

 public BufferedInputStream getStream() {
  return stream;
 }

 public long getFilesize() {
  return filesize;
 }

}


}
a

2013年2月18日月曜日

JTableにコンポーネントを乗せたい


参考になったサイト様
http://t2wonderland.blogspot.jp/2012/05/javaswing-jtablejprogressbar.html

以下、いつかJTableで何か書いたらソースを乗せます

2013年2月8日金曜日

Eclipse Marketplace error

Eclipse Marketplaceで、
java.lang.reflect.InvocationTargetException
とでてしまった。

http://stackoverflow.com/questions/10562012/eclipse-marketplace-error
を見つけて気がついたのは、Eclipseにproxyを通しているかも知れないことだ。

案の定、ネットワークの設定を見たところ、proxyの設定があったのでオフにしておいた。