Fimony » Kiến Thức Chuyên Môn » Lĩnh Vực IT » Java » Có ai hướng dẫn mình gán actionListener hem

Trả lời
  #1 (permalink)  
Cũ 01-30-2010, 11:22 AM
Avatar của lehoang024414980
Moderator
 
Tham gia ngày: Sep 2009
Đến từ: Minh Râu City
Bài gửi: 406
Tiền: 22205 VND (Donate)
Cám ơn: 409
Đã cám ơn 373 lần trong 233 bài
Mặc định Có ai hướng dẫn mình gán actionListener hem

Tình hình là đang viết bài MyPaint bằng Java. Trình bày giao diện xong rầu mà chưa biết gán action vào :((

Mã:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Mypaint extends JFrame implements ActionListener, MouseListener
{
private JPanel MainPanel,p1,p2,p1a,p1b,p1a1,p1a2,p1b1,p1b2;
private JLabel lmp,llc,lfc;
private JButton b_Rect,b_Circle,b_Polygon,b_Ellipse;
private JComboBox cbo_LineColor,cbo_FillColor;
private Object source;
int x1, x2, y1, y2;
int shape;

public Mypaint()
{
super("My Paint Application");
MainPanel=new JPanel();
p1=new JPanel();
p2=new JPanel();
p1a=new JPanel();
p1b=new JPanel();
p1a1=new JPanel();
p1a2=new JPanel();
p1b1=new JPanel();
p1b2=new JPanel();

getContentPane().add(MainPanel);
MainPanel.setLayout(new GridLayout(2,1,5,5));
MainPanel.add(p1);
MainPanel.add(p2);
p1.setLayout(new GridLayout(2,1,5,5));
p1.add(p1a);
p1.add(p1b);
p1a.setLayout(new GridLayout(2,1,5,5));
p1a.add(p1a1);
p1a.add(p1a2);
p1b.setLayout(new GridLayout(1,2,5,5));
p1b.add(p1b1);
p1b.add(p1b2);

lmp=new JLabel("My Paint Application");
p1a1.add(lmp);

b_Rect=new JButton("Rectangle");
b_Circle=new JButton("Circle");
b_Polygon=new JButton("Polygon");
b_Ellipse=new JButton("Ellipse");
p1a2.setLayout(new FlowLayout());
p1a2.add(b_Rect);
p1a2.add(b_Circle);
p1a2.add(b_Polygon);
p1a2.add(b_Ellipse);

llc=new JLabel("Select Line Color");
lfc=new JLabel("Select Fill Color");

cbo_LineColor=new JComboBox();
cbo_FillColor=new JComboBox();

cbo_LineColor.addItem("Red");
cbo_LineColor.addItem("Magenta");
cbo_LineColor.addItem("Blue");
cbo_LineColor.addItem("Cyan");
cbo_LineColor.addItem("Green");
cbo_LineColor.addItem("Yellow");
cbo_LineColor.addItem("White");
cbo_LineColor.addItem("Gray");
cbo_LineColor.addItem("Black");

cbo_FillColor.addItem("Red");
cbo_FillColor.addItem("Magenta");
cbo_FillColor.addItem("Blue");
cbo_FillColor.addItem("Cyan");
cbo_FillColor.addItem("Green");
cbo_FillColor.addItem("Yellow");
cbo_FillColor.addItem("White");
cbo_FillColor.addItem("Gray");
cbo_FillColor.addItem("Black");

p1b1.setLayout(new GridLayout(2,1,5,5));
p1b1.add(llc);
p1b1.add(cbo_LineColor);

p1b2.setLayout(new GridLayout(2,1,5,5));
p1b2.add(lfc);
p1b2.add(cbo_FillColor);
p2.addMouseListener(this);
b_Rect.addActionListener(this);
b_Circle.addActionListener(this);
b_Polygon.addActionListener(this);
b_Ellipse.addActionListener(this);
}

public void drawShape(int shape) {
    Graphics g = getGraphics();
    
    switch (shape) {
    case 1:
        if (x1<x2 && y1<y2);{
            g.drawRect(x1, y1, Math.abs(x2-x1), Math.abs(y2-y1));
            }
            else if (x1<x2 && y1>y2);{
                g.drawRect(x1, y1, Math.abs(x2-x1), Math.abs(y2-y1));
            }
        break;
    case 2:
        if (x1<x2 && y1<y2) {
            g.drawPolygon(p);
        }
        else if (x1>x2 && y1<y2) {
            g.drawEl(x2, y1, Math.abs(x2-x1), Math.abs(y2-y1));
        }
                
        break;
    case 3:
        g.drawRect(x1, y1, x2-x1, y2-y1);
        break;
    }
}

public void actionPerformed(ActionEvent ae)
{
source=ae.getSource();
if (source==b_Rect)
{

}
if (source==b_Circle)
{
}
if (source==b_Polygon)
{
}
if (source==b_Ellipse)
{
}
}
public static void main(String args[])
{
Mypaint pa1=new Mypaint();
pa1.setSize(600,600);
pa1.setVisible(true);
}
}
__________________

Còn nhìn gì nữa ?
Lắc mông không nào?


Trả lời với trích dẫn
  #2 (permalink)  
Cũ 01-31-2010, 08:26 PM
B&W B&W đang ẩn
Kiếm việc làm
 
Tham gia ngày: Oct 2009
Bài gửi: 6
Tiền: 100 VND (Donate)
Cám ơn: 3
Đã cám ơn 7 lần trong 3 bài
Mặc định

Trong các hàm if của actionPerformed gọi drawShape(shape). Thêm nữa là trong actionPerformed nên dùng if... else if...
Còn một số lỗi lặt vặt như là sau if() ; <== sao lại có dấu chấm phẩy?, trong case 2 hàm g.drawPolygon(p) <== p này chưa khai báo.
Trả lời với trích dẫn
  #3 (permalink)  
Cũ 02-01-2010, 06:00 PM
Avatar của lehoang024414980
Moderator
 
Tham gia ngày: Sep 2009
Đến từ: Minh Râu City
Bài gửi: 406
Tiền: 22205 VND (Donate)
Cám ơn: 409
Đã cám ơn 373 lần trong 233 bài
Mặc định

Quote:
Nguyên văn bởi B&W Xem bài viết
Trong các hàm if của actionPerformed gọi drawShape(shape). Thêm nữa là trong actionPerformed nên dùng if... else if...
Còn một số lỗi lặt vặt như là sau if() ; <== sao lại có dấu chấm phẩy?, trong case 2 hàm g.drawPolygon(p) <== p này chưa khai báo.
Em chưa khai báo hết chỗ drawPolygon. Giờ em dùng được switch case để nó chọn ra các trường hợp khi người dùng chọn kiểu vẽ rồi.

Nhưng mà cuối cùng em quay lại dùng Applet để làm bài mới cho dễ, đối phó cho lẹ :( Nghĩ học hết 2 tuần ngu phần Application, chả biết gán mấy cái hàm vào để chạy A...
__________________

Còn nhìn gì nữa ?
Lắc mông không nào?


Trả lời với trích dẫn
Trả lời


Những người đang xem chủ đề: 1 (0 thành viên và 1 khách)
 
Công cụ bài viết Tìm trong chủ đề này
Tìm trong chủ đề này:

Tìm chi tiết
Kiểu hiển thị

Quyền viết bài
Bạn không thể gửi chủ đề mới
Bạn không thể gửi trả lời
Bạn không thể gửi file đính kèm
Bạn không thể sửa bài viết của mình

BB code đang Mở
Mặt cười đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở



Múi giờ GMT +8. Hiện tại là 01:11 AM
Sử dụng mã nguồn vBulletin® Phiên bản 3.8.0 Release Candidate 2
© 2007 - 2009 Nhóm phát triển website và thành viên Fimony.com
BQT không chịu bất cứ trách nhiệm nào từ nội dung bài viết của thành viên.



Content Relevant URLs by vBSEO 3.3.0