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的时候没有方法?新手,求教,
然后,求补充或者指导程序完成,想做成可以拖动的,就像附件画图里面的,记录鼠标位置,能补充完继续追分
java没有为Jpanel定义方法,高分!
答案:5 悬赏:20
解决时间 2021-11-14 14:51
- 提问者网友:
- 2021-11-14 10:29
最佳答案
- 二级知识专家网友:我叫很个性
- 2021-11-14 11:45
基本上那些画椭圆,矩形,那些都是 调用 g.fillXX();来实现的了,以后希望可以多多交流,没老师教自学成这样很不错了,但建议以后swing这方面还是别去深究,外面有企业会要,但是很少
全部回答
- 1楼网友:情战辞言
- 2021-11-14 15:47
你将构造方法Draw()中的 DrawPanel drawingArea = new DrawPanel(); 修改为 drawingArea = new DrawPanel(); 应该行了。应为你在下面是用的drawingArea是全部变量,而你实例化的时候是一个局部变量,故这么些~~。
- 2楼网友:爱情是怎么炼成的
- 2021-11-14 14:16
private static image img=tk.getimage(loginpane. class.getclassloader().getresource("images/login.jpg")); 这是java的反射机制,class类的应用,你在new对象的时候,就自动把img实例化为("images/login.jpg")),
- 3楼网友:努力只為明天
- 2021-11-14 13:55
没太明白你说的是什么,drawingArea不是有方法吗(setPosition(int a1,int b1,int a2,int b2)),这个方法你自已写的,应该知道它是要做什么的,它的目的就当你的鼠标按下去,和鼠标按住拖动时获取鼠标的坐标。
- 4楼网友:风格单纯
- 2021-11-14 12:53
将使用JPanel在场所,替换成你自己的DrawPanel 类。
第6行
JPanel drawingArea,buttonPanel; //按钮面板,画图区域
↓ 修改如下
DrawPanel drawingArea, buttonPanel; // 按钮面板,画图区域
第26行
DrawPanel drawingArea = new DrawPanel();
↓ 修改如下
drawingArea = new DrawPanel();
第60行
buttonPanel = new JPanel();
↓ 修改如下
buttonPanel = new DrawPanel();
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯