じゃばばばば

Javaとかいろいろ

基礎からやり直すJava入門(前編)

僕は今下記のサイト
Java Swing「ドラッグ&ドロップ」メモ(Hishidama's Swing-TransferHandler Memo)
ドラッグアンドドロップでファイルを受け取るJavaアプリ | サクッとJava研修室
javaでファイルのドロップを受け付ける部品を作ってみた - Sacrificed & Exploited
を参考にどうにかして音楽プレイヤーにドラッグアンドドロップの機能をつけようとしているのですが、「canImportで音声ファイルだけを受け付けるにはどうしたらいいのか」とか「importDataが何やってるのか」など分からず作業がストップしています。
ちゃんとJavaを勉強した人なら分かるように書いてあるんだと思いますが、僕の場合

「基礎はやってて面白くないから自分が作りたいもの作って、そこで分からない事があればそのとき調べればいいや!」

というスタイルでJavaやってきたので、
try{}catchって何!?
textArea.setTransferHandler(new DropFileHandler());
何でDropFileHandlerつくったのに定義されてないってエラー出んの!?
って感じでコード読んでも理解できるのは半分程度で、このままではやばいと思い基礎からJavaを学び直そうと決意しました。

追伸
後編は十分基礎が身についたと思ったら書く予定。

じゃんけんするだけのアプリ(pc用)

じゃんけんするだけのアプリ出来ました。

package swing.sample;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Random;

public class jankengui implements ActionListener {
    int a=0;
    private JFrame mainFrame;
    private Container contentPane;
    private JTextArea textArea;
    private JScrollPane scrollPane;
    private JPanel buttonPane;
    private JButton Button1;
    private JButton Button2;
    private JButton Button3;

    public jankengui() {
        mainFrame = new JFrame("じゃんけん");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(800, 600);
        mainFrame.setLocationRelativeTo(null);
        contentPane = mainFrame.getContentPane();
        textArea = new JTextArea();
        scrollPane = new JScrollPane(textArea);
        Button1 = new JButton("グー");
        Button2 = new JButton("チョキ");
        Button3 = new JButton("パー");
        Button1.addActionListener(this);
        Button2.addActionListener(this);
        Button3.addActionListener(this);
        buttonPane = new JPanel();
        buttonPane.add(Button1);
        buttonPane.add(Button2);
        buttonPane.add(Button3);
        contentPane.add(scrollPane, BorderLayout.CENTER);
        contentPane.add(buttonPane, BorderLayout.SOUTH);
        mainFrame.setVisible(true);
    }
    public void janken(int a){
        int cpu;
        Random rnd=new Random();
        cpu=rnd.nextInt(3);
        if(cpu==a){
            textArea.append("あいこ\n");
        }else{switch(cpu) {
        case 0: switch(a){
            case 1: textArea.append("負け\n");break;
            case 2: textArea.append("勝ち\n");break;
        }break;
        case 1: switch(a){
            case 0: textArea.append("勝ち\n");break;
            case 2: textArea.append("負け\n");break;
        }break;
        case 2: switch(a){
            case 0: textArea.append("負け\n");break;
            case 1: textArea.append("勝ち\n");break;
        }break;
        }
        }
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == Button1) {
            a=0;
            janken(a);
        }
        if (event.getSource() == Button2) {
            a=1;
            janken(a);
        }
        if (event.getSource() == Button3) {
            a=2;
            janken(a);
        }
    }

    public static void main(String[] args) {
        new jankengui();
    }
}

public jankengui()

public void actionPerformed(ActionEvent event)

はActionListenerの使い方が分からなかったので
SwingでJavaに強くなる(4):Swingのイベント処理を知る (2/2) - @IT
こちらのサイトのコードをコピペ&改変して作らせて頂きました。

ボタンをクリックすると画像のように勝敗の結果がテキストエリアに追加されていきます。
f:id:oKiNaWa:20140927102526p:plain

今はまだ勝敗を文字で表示するだけですが、これからいろいろ機能を追加していこうと思います。

届いた

Aruduinoの互換基盤とブレッドボードとジャンプワイヤが届いた。

LEDやセンサは今度友達にもらいにいく。いよいよロボット活動が本格的になってきた。(僕の中では)

アルディーノのスペルこれであってるのか?

スナックパインとかマンゴーとか食べた

仕送りでマンゴーやちんすこうやスナックパインが送られてきたので食べてみました。

マンゴーはいい感じに熟しててめちゃウマでした。冷凍して食べてもおいしいのですが、冷やすだけの方が甘みがましておいしかったです。冷凍マンゴーを小さく切って、サーターアンダギーの生地で包んで揚げるてみましたが、マンゴーの周りの生地がべちょべちょしてまずかったです。

スナックパインの方は、皮が若干緑で熟しきってない感じでしたがなかなかうまかったです。このスナックパインは食べ方が独特で面白かったです。(小並感)

今作ってるじゃんけんするアプリ

先月あたりからswingクラスを使う練習としてGUIでじゃんけんをするプログラムを作ってるので完成したら記事にします。

図書館でswingについての解説がある本を借りたのは良いけどその後遊びまくって何もしてないんだよな...