怎么添加绘图语句

bernard989 2009-06-07 02:49:31
初学JAVA,制作了一个菜单,想让别人在点击菜单项的时候,窗口出现图形,比如点一下菜单项“圆”,就出现一个圆。菜单已经制作好了,但是绘图语句不知道怎么写,需要导入哪些包啊?谢谢了
...全文
31 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
j1223jesus 2009-06-08
  • 打赏
  • 举报
回复
我的思路是用一个状态来判断目前你选的是什么图形,然后在paint方法中根据状态state来绘图,很简单的思路,你看看应该就明白了

原来结贴了还能回复的啊。。。。
刚刚去你空间留言了,麻烦删了,不好意思
j1223jesus 2009-06-08
  • 打赏
  • 举报
回复
package untitled7;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;

public class J_Menu
extends JFrame {
int state = -1;
public J_Menu() {
super("常规菜单应用示例");
JMenuBar mBar = new JMenuBar();
setJMenuBar(mBar); //设置菜单栏

JMenu[] m = {
new JMenu("圆(O)"), new JMenu("多边形(R)"), new JMenu("退出(Q)")};
char[][] mC = {
{
'O', 'R', 'Q'}
, {
'O', 'T'}
, {
'R', 'W'}
, {
'Q'}
};
JMenuItem[][] mI = {
{
new JMenuItem("圆(O)"), new JMenuItem("椭圆(T)")}
, {
new JMenuItem("矩形(R)"), new JMenuItem("五角星(W)")}
, {
new JMenuItem("退出(Q)")}
};
int i, j;
for (i = 0; i < m.length; i++) {
mBar.add(m[i]); //添加下拉式菜单
m[i].setMnemonic(mC[0][i]);
for (j = 0; j < mI[i].length; j++) {
m[i].add(mI[i][j]);
mI[i][j].setMnemonic(mC[i + 1][j]); //添加命令式菜单项
mI[i][j].setAccelerator(
KeyStroke.getKeyStroke("ctrl" + mC[i + 1][j]));
mI[i][j].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JMenuItem mItem = (JMenuItem) e.getSource();
System.out.println("运行菜单项:" + mItem.getText());
if (mItem.getText() == ("圆(O)")) {
state = 0;
} else
{
state =1;
}
if (mItem.getText() == ("退出(Q)")) {
System.exit(0);
}
}
}
);
}
}
m[0].insertSeparator(1);
}



public void paint(Graphics g) {
super.paint(g);
if (state == 0) {
g.setColor(Color.black);
g.fillRect(50, 50, 100, 100);
}else if(state==1)
{
g.fillArc(50,50,100,100,0,360);
}
}

public static void main(String args[]) {
JFrame app = new J_Menu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(250, 200);
app.setVisible(true);
}
}
bernard989 2009-06-07
  • 打赏
  • 举报
回复
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.Graphics;
public class J_Menu extends JFrame {

public J_Menu() {
super ("常规菜单应用示例");
JMenuBar mBar=new JMenuBar();
setJMenuBar(mBar);//设置菜单栏

JMenu [] m={ new JMenu("圆(O)"),new JMenu("多边形(R)"),new JMenu("退出(Q)")};
char [][]mC={{'O','R','Q'},{'O','T'},{'R','W'},{'Q'}};
JMenuItem [][]mI=
{
{new JMenuItem("圆(O)"),new JMenuItem("椭圆(T)")},
{new JMenuItem("矩形(R)"),new JMenuItem("五角星(W)")},
{new JMenuItem("退出(Q)")}
};
int i,j;
for(i=0;i<m.length;i++)
{
mBar.add(m[i]);//添加下拉式菜单
m[i].setMnemonic(mC[0][i]);
for (j=0;j<mI[i].length;j++)
{
m[i].add(mI[i][j]);
mI[i][j].setMnemonic(mC[i+1][j]);//添加命令式菜单项
mI[i][j].setAccelerator(
KeyStroke.getKeyStroke("ctrl"+mC[i+1][j]));
mI[i][j].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JMenuItem mItem=(JMenuItem)e.getSource();
System.out.println("运行菜单项:"+mItem.getText());
if (mItem.getText()==("圆(O)")){
drawOval(0,10,40,40); }//就是这里不知道怎么写了。
if (mItem.getText()==("退出(Q)")){System.exit(0);}
}
}
);
}
}
m[0].insertSeparator(1);
}
public static void main(String args[])
{
JFrame app=new J_Menu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(250,200);
app.setVisible(true);
}
}
谢谢
knightzhuwei 2009-06-07
  • 打赏
  • 举报
回复
贴代码
bernard989 2009-06-07
  • 打赏
  • 举报
回复
类我已经导入了,但直接在IF语句中调用的话,编译器会说“找不到符号”,这是怎么回事啊
bernard989 2009-06-07
  • 打赏
  • 举报
回复
编译器说“找不到符号”?
knightzhuwei 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bernard989 的回复:]
谢谢你,我试过了。但可以直接在IF语句中调用这个函数吗?
[/Quote]
可以
bernard989 2009-06-07
  • 打赏
  • 举报
回复
谢谢你,我试过了。但可以直接在IF语句中调用这个函数吗?
j1223jesus 2009-06-07
  • 打赏
  • 举报
回复
主要还是paint方法和graphics类的运用
sainer 2009-06-07
  • 打赏
  • 举报
回复
画圆:
fillOval(x,y,w,h)方法
画矩形:
fillRect(x,y,w,h)方法
sainer 2009-06-07
  • 打赏
  • 举报
回复
找本相关的书来看看
为了使更多的Qt初学者能尽快入门Qt,也为了Qt及Qt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧