中易网

java没有为Jpanel定义方法,高分!

答案:5  悬赏:20  
解决时间 2021-11-14 14:51
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Draw extends JFrame //主类,扩展了JFrame类,用来生成主界面
{
JPanel drawingArea,buttonPanel; //按钮面板,画图区域
int width = 600, height =480; //定义画图区域初始大小
MenuBar menubar; //菜单栏
Menu line,oval,rect,polygon; //定义菜单
MenuItem item1,item2,item3,item4,item5,item6; //下拉菜单按钮
Button button[]; //按钮数组
int x1,x2,y1,y2; //坐标,鼠标
String name[] = {
"直线",
"空心椭圆",
"实心椭圆",
"空心矩形",
"实心矩形",
"多边形",
};
public Draw()
{
Toolkit tool=getToolkit();
Dimension dim=tool.getScreenSize();
setBounds(300,250,dim.width=500,dim.height=400);
DrawPanel drawingArea = new DrawPanel();
menubar=new MenuBar();
line=new Menu("直线");
oval=new Menu("椭圆");
rect=new Menu("矩形");
polygon=new Menu("多边形");

item1=new MenuItem("直线");
item2=new MenuItem("空心椭圆");
item3=new MenuItem("实心椭圆");
item4=new MenuItem("空心矩形");
item5=new MenuItem("实心矩形");
item6=new MenuItem("空心多边形");
item1.addActionListener(new handler());
item2.addActionListener(new handler());
item3.addActionListener(new handler());
item4.addActionListener(new handler());
item5.addActionListener(new handler());
item6.addActionListener(new handler());
line.add(item1);
oval.add(item2);
oval.addSeparator();
oval.add(item3);
rect.add(item4);
rect.addSeparator();
rect.add(item5);
polygon.add(item6);
polygon.addSeparator();
menubar.add(line);
menubar.add(oval);
menubar.add(rect);
menubar.add(polygon);
setMenuBar(menubar);
button = new Button[name.length];
buttonPanel = new JPanel();
for (int i = 0; i < button.length; i++) {
button[i] = new Button( name[i]);
button[i].addActionListener(new handler());
buttonPanel.add(button[i]);
}
add(buttonPanel,BorderLayout.SOUTH);
add(drawingArea,BorderLayout.CENTER);
setVisible(true);
}
class DrawPanel extends JPanel{
public DrawPanel() {
setBackground(Color.white);
addMouseListener(new mouseA());
addMouseMotionListener(new mouseB());
}
public void setPosition(int a1,int b1,int a2,int b2)
{ x1=a1;
y1=b1;
x2=a2;
y2=b2;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
}
}
class mouseA extends MouseAdapter
{
public void mousePressed(MouseEvent e) {
x1 = e.getX();
y1 = e.getY();
}
}
class mouseB extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
x2= e.getX();
y2= e.getY();
}
}
class handler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==item1 )
{
drawingArea.setPosition(50,50,50,50);
}
}
}
}
我要编一个可以绘制图形的小程序,底下监听器这边为什么用drawingArea的时候没有方法?新手,求教,

然后,求补充或者指导程序完成,想做成可以拖动的,就像附件画图里面的,记录鼠标位置,能补充完继续追分
最佳答案
基本上那些画椭圆,矩形,那些都是 调用 g.fillXX();来实现的了,以后希望可以多多交流,没老师教自学成这样很不错了,但建议以后swing这方面还是别去深究,外面有企业会要,但是很少
全部回答
你将构造方法Draw()中的 DrawPanel drawingArea = new DrawPanel(); 修改为 drawingArea = new DrawPanel(); 应该行了。应为你在下面是用的drawingArea是全部变量,而你实例化的时候是一个局部变量,故这么些~~。
private static image img=tk.getimage(loginpane. class.getclassloader().getresource("images/login.jpg")); 这是java的反射机制,class类的应用,你在new对象的时候,就自动把img实例化为("images/login.jpg")),
没太明白你说的是什么,drawingArea不是有方法吗(setPosition(int a1,int b1,int a2,int b2)),这个方法你自已写的,应该知道它是要做什么的,它的目的就当你的鼠标按下去,和鼠标按住拖动时获取鼠标的坐标。
将使用JPanel在场所,替换成你自己的DrawPanel 类。 第6行 JPanel drawingArea,buttonPanel; //按钮面板,画图区域 ↓ 修改如下 DrawPanel drawingArea, buttonPanel; // 按钮面板,画图区域 第26行 DrawPanel drawingArea = new DrawPanel(); ↓ 修改如下 drawingArea = new DrawPanel(); 第60行 buttonPanel = new JPanel(); ↓ 修改如下 buttonPanel = new DrawPanel();
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大悟县河口供电所供电营业厅办公地址在什么地
同学之间闹着玩算骂人吗
阳台窗户楼雨怎么办呀
那黑耀石在强光下照射成蓝色,是黑耀石品质不
梦见大象过河是什么意思?好不好呢?
大悟县吕王供电所供电营业厅地址有知道的么?
求告知飞利浦电视是哪产的
杯子打碎了有什么特殊含义吗?
南阳市育才高中怎么去啊,我要去那办事
金令装潢怎么样
求一部美女被怪物qq,男主角在边边不敢动的电
兴文华曼格调酒店地址有知道的么?有点事想过
大悟县余河供电所供电营业厅办公地址在什么地
佳木斯梅花专卖店(佳木斯新玛特购物广场)地
在乡镇开一间寿衣店大概需要多少资金?
推荐资讯
福莱尔汽车是用什么发动机的?
江苏省宜兴市官林工业集中区凌霞村 翻译成英
《汤姆索亚历险记》颂扬了汤姆和他的小伙伴天
谁能发我份软件开发文档的实例,要案例,要很
道州属于哪个市
为什么电视机离沙发距离决定电机机多大?我3.
谁知道九江哪有帮助网虫戒网瘾的地方?
新时代被称为美国版的红楼梦是那一部名著
E8400富士康的p43主板2G*2(1333)内存,超频
巴林左旗气象局地址在哪,我要去那里办事
尼勒克县城内有景观吗?住哪个宾馆安全?
qq皮肤怎么设置全屏
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?