... ということで、前回に続きProcessing からツイートするプログラムの作成です。今回で完成させてしまいましょう。
- setup() 関数の完成
以下の内容をsetup 関数に追加してください。{ から } の間に入れるということです。
size(300, 350);
setLayout(null);
TB = loadImage("*****");
TB_ = loadImage("*****");
inputLine = new TextArea("type your tweet");
inputLine.setBounds(45, 45, 200, 140);
add(inputLine);
前半では、プログラムを起動させた時のウィンドウサイズを指定したり、ツイートボタンの画像を読み込んだりしています。***** の部分には、画像ファイルの名前を入れてください。後半には、テキストボックスの生成とサイズの指定、キーボードからの文字入力を受け付けるようにするおまじないを書きます。
- draw() 関数
draw 関数はその名のとおり、どんな描写をするかを指定する部分です。以下のように記述します。
void draw(){
background(0);
image(TB, 60, 245);
if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
image(TB_, 60, 245);
}
}
background で背景の色を指定しています。if ではマウスの位置を判定して、ボタンの位置と重なったときに色を変えたボタンの画像に置き換えるようにしています。
- tweet() 関数
実際につぶやく処理を行う部分です。以下のように記述します。
void tweet(){
try{
Status status = twitter.updateStatus(iLine);
System.out.println(status.getText());
}
catch(TwitterException te){
System.out.println("Error: " + te.getMessage());
}
}
twitter.updateStatus() メソッドでツイートできます。そのあと、println() でツイートをコンソールにも表示させます。catch() の部分には、try() で指定した処理がうまく実行できなかった、例外時の処理を書きます。
- mouseClicked() 関数
お待たせしました。最後にマウスをクリックした時のイベントハンドラを書いていきましょう。
void mouseClicked(){
iLine = inputLine.getText();
if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
tweet();
}
}
キーボードから入力した内容をString 型の文字列に置き換えます。if() でクリックされた位置を判定し、ボタンの上であればtweet() 関数を呼び出して、コメントを投稿します。
- すべてのコード
import twitter4j.conf.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
PImage TB, TB_;
Twitter twitter;
TextArea inputLine;
String iLine;
void setup(){
size(300, 350);
setLayout(null);
TB = loadImage("*****");
TB_ = loadImage("*****");
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("*****");
cb.setOAuthConsumerSecret("*****");
cb.setOAuthAccessToken("*****");
cb.setOAuthAccessTokenSecret("*****");
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
inputLine = new TextArea("type your tweet");
inputLine.setBounds(45, 45, 200, 140);
add(inputLine);
}
void draw(){
background(0);
image(TB, 60, 245);
if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
image(TB_, 60, 245);
}
}
void tweet(){
try{
Status status = twitter.updateStatus(iLine);
System.out.println(status.getText());
}
catch(TwitterException te){
System.out.println("Error: " + te.getMessage());
}
}
void mouseClicked(){
iLine = inputLine.getText();
if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
tweet();
}
}
一部、順番を入れ替えていますが、これでProcessing からつぶやくことができると思います。参考にさせていただいたページは下にあります。