文档库 最新最全的文档下载
当前位置:文档库 › java++GUI+++事件监听

java++GUI+++事件监听


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;
public class Graphic extends JFrame implements ActionListener, MouseListener{
public static final int WIDTH=800;
public static final int HEIGHT=600;
public static final int HORIZONTAL_STRUT_SIZE = 10;
public static final int X_START=15;
public static final int X_END=385;
public static final int Y_START=15;
public static final int Y_END=15;
public int Paintx,Painty;//定义画图起始处坐标
public boolean PaintOn=false;//用于判断是否在该位置画接口
private int top = 30, left = 175;
private String BH="一二三四五六七八九十";//用于显示各边标号
private String port="接口";//在接口空格画字
JTextField inputField1=new JTextField(5);
private static int gridNum=9; // 方格长度及数目
private int gridLen=50;
static int [][]Board;//用二维数组表示迷宫各个格子
public static void main(String arg[]){
Graphic window =new Graphic();
window.setVisible(true);
//在空格处初始化值为0
for(int i = 0;ifor(int i1=0;i1Board[i][i1]=0;
}
}
}
public Graphic(){
setSize(WIDTH,HEIGHT);
setTitle("Routing Wire");
setResizable(false);
Container content=getContentPane();
content.setBackground(Color.green);
content.setLayout(new BorderLayout());
Box horizontalBox = Box.createHorizontalBox();//创建一个从左到右显示其组件的box
Component horizontalStrut =
Box.createHorizontalStrut(HORIZONTAL_STRUT_SIZE);//创建一个固定宽度的不可见组件
horizontalBox.add(horizontalStrut);
JButton button0=new JButton("输入行列数");
button0.addActionListener(this);

horizontalBox.add(button0);
horizontalBox.add(inputField1);
JButton button2=new JButton("结束创建");
horizontalBox.add(button2);

Component horizontalStrut3 =
Box.createHorizontalStrut(HORIZONTAL_STRUT_SIZE);//创建一个固定宽度的不可见组件
horizontalBox.add(horizontalStrut3);
JButton button=new JButton("单步执行");
JButton button1=new JButton("自动执行");

horizontalBox.add(button);
horizontalBox.add(button1);
content.add(horizontalBox, BorderLayout.SOUTH);
}
public void paint(Graphics g){
super.paint(g);
//创建用于画棋盘的panel,增加事件监听
JPanel panel=new JPanel();
panel.setSize(WIDTH,HEIGHT);
panel.setBackground(Color.orange);
panel.addMouseListener(this);//*由于申明成抽象类,出错,解决方案:
/*在主方法申明implements*/
g.setColor(Color.black);//设置画笔颜色为黑色

for (int i = 0; i

< gridNum + 1; i++) {
int x1 = left + i * gridLen;//13+i*45
int x2 = x1;
int y1 = top;//top=30(前面已定义)
int y2 = top + gridNum * gridLen;//13+i*45
g.drawLine(x1, y1, x2, y2);//画竖线,在画布中心绘制直线(使用当前画笔颜色在(x1,y1)和(x2,y2)间画一条线段
x1 = left;
x2 = left + gridNum * gridLen;
y1 = top + i * gridLen;
y2 = y1;
g.drawLine(x1, y1, x2, y2);//画横线,在画布中心绘制直线(使用当前画笔颜色在(x1,y1)和(x2,y2)间画一条线段
}
Image I1 = new ImageIcon("smiley.gif").getImage();

int x=left+1;//14+i*44
int y=top+1;//有一处变量用了X,Y
g.drawImage(I1,x,y,gridLen-5,gridLen-5,this);
if(PaintOn=true){
g.drawImage(I1,Paintx,Painty,gridLen-5,gridLen-5,this);
}

g.setFont(new Font(null,DEFAULT_CURSOR,30));

//为外围表格添加标号

for(int i=1;iint x1=(left+i*gridLen)+10;
int y1=top+30;
g.drawString(BH.substring(i-1,i), x1, y1);
}
for(int i=1;iint x1=left+10;
int y1=top+(i+1)*gridLen-5;
g.drawString(BH.substring(i-1,i ), x1, y1);}

for(int i=1;iint x1=(left+i*gridLen)+10;
int y1=top+30;
g.drawString(BH.substring(i-1,i), x1, y1);
}
for(int i=1;iint x1=left+10;
int y1=top+(i+1)*gridLen-5;
g.drawString(BH.substring(i-1,i ), x1, y1);}

add(panel,BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("输入行列数"))
inputField1.getText();
String inputFiel=inputField1.getText();
int inputNum= Integer.parseInt(inputFiel);//此处应该弹出窗口,抛出自定义异常输入错误,
if(inputNum>=12){
JOptionPane.showMessageDialog(null, "注意:所输入的数字太大!", "警告", JOptionPane.WARNING_MESSAGE);
gridNum=9;gridLen=50;}else{
gridNum=inputNum;gridLen=450/inputNum;}
repaint();
}
//增加对鼠标事件抽象方法的申明
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub

int ClickPx=e.getX();
int ClickPy=e.getY();//获得点击处的坐标

int ATx = 0,ATy=0;
for(int i=1;iif(ClickPx>left+i*gridLen&&ClickPyATx=i;
}
Paintx=left+ATx*gridLen;
}
for(int i=1;iif(ClickPy>top+i*gridLen&&ClickPyATy=i;
}
Painty=top+ATy*gridLen;
}
if(Paintx>left+gridLen&&Painty>top+gridLen&&Paintx//单击则允许该输入
Board[ATx][ATy]=1;//在此处画图则令其为一
}
else{PaintOn=false;}
repaint(Paintx,Painty,gridLen,gridLen);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub


}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
}

相关文档
相关文档 最新文档