おえかき その6 メニューの利用Advertisementメニューくっつけ。
とりあえずー、メニューつくって、前回の「元に戻す」と「画面消去」の機能をつけましょう。説明なしでイキナリ実装。説明はそのうちこっちでヤル。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Gr{
public static void main(String args[]){
mainFrame f = new mainFrame();
f.setSize(400, 300);
f.setTitle("タイトル");
f.show();
}
}
class mainFrame extends Frame implements WindowListener,
MouseListener, ActionListener{
int x, y;
Vector v1 = new Vector();
MenuBar mb = new MenuBar();
Menu file, edit, help;
MenuItem quit;
MenuItem undo, clear;
mainFrame(){
file = new Menu("ファイル");
edit = new Menu("編集");
help = new Menu("ヘルプ");
quit = new MenuItem("終了");
undo = new MenuItem("元に戻す");
clear = new MenuItem("画面消去");
file.add(quit);
edit.add(undo);
edit.addSeparator(); //セパレータ
edit.add(clear);
mb.add(file);
mb.add(edit);
mb.add(help);
mb.setHelpMenu(help);
setMenuBar(mb);
quit.addActionListener(this);
clear.addActionListener(this);
undo.addActionListener(this);
addWindowListener(this);
addMouseListener(this);
}
public void paint(Graphics g){
for(int i = 0; i < v1.size(); i++){
((LineData)v1.elementAt(i)).Draw(g);
}
}
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
}
public void mouseReleased(MouseEvent e){
v1.addElement(new LineData(x, y, e.getX(), e.getY()));
repaint();
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == quit){
System.exit(0);
}
if(e.getSource() == undo && v1.size() > 0){
v1.remove(v1.size()-1);
repaint();
}
if(e.getSource() == clear){
v1.removeAllElements();
repaint();
}
}
public void windowOpened(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
}
class LineData{
private int sx, sy;
private int ex, ey;
public LineData(int x1, int y1, int x2, int y2){
sx = x1;
sy = y1;
ex = x2;
ey = y2;
}
public void Draw(Graphics g){
g.drawLine(sx, sy, ex, ey);
}
}
はー。ながくなった。実行結果 ![]() おお。なかなかヨイね。でけた。 ちなみにactionPerformed()の処理中の連続if文は、もちろんelse ifとかで大丈夫だい。いや、なんとなくさ、読みにくくなりそうだと思ってな。 次回は何しよ。 とりあえず線の色とか多角形とか、細かいトコかな。 Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ UIコレクションギャラリー サイト検索Y!ログール |