首先,手动画一个小乌龟,如下:
然后,按照Java绘图基本步骤一步步来。
swing 编程步骤:
1. 继承JFrame
2. 定义组件
3.创建组件(构造函数)
4.添加组件
5.对窗体设置
6.显示窗体
最终效果如下:
代码如下:
/**
* 功能:画一个乌龟
*/
package com.test1; 。
import java.awt.*; 。
import javax.swing.*; 。
public class MyTortoise extends JFrame{ 。
MyPanel2 mp = null; 。
//构造函数
public MyTortoise(){ 。
mp = new MyPanel2(); 。
this.add(mp); 。
this.setTitle("小乌龟,丑丑哒"); 。
this.setSize(400,300); 。
this.setVisible(true); 。
this.setLocation(300,200); 。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 。
}
public static void main(String[] args) { 。
MyTortoise mtg = new MyTortoise(); 。
}
}
//我的面板。只有JPanel有画图方法,JFrame没有,故必须在JFrame中添加JPanel 。
class MyPanel2 extends JPanel{ 。
//定义一个乌龟
Tortoise t = null; 。
//构造函数
public MyPanel2(){ 。
t = new Tortoise(100,100); 。
}
//画乌龟
public void drawTortoise(int x, int y, Graphics g){ 。
//1.画脸 。
g.setColor(Color.green); 。
g.fillOval(x+60, y, 30, 15); 。
//2.画左眼 。
g.setColor(Color.black); 。
g.fillOval(x+65, y+3, 5, 5); 。
//3.画右眼 。
g.fillOval(x+78, y+3, 5, 5); 。
//4.画脖子 。
g.setColor(Color.green); 。
g.fillOval(x+70, y, 10, 42); 。
//5.画乌龟壳 。
g.setColor(Color.red); 。
g.fillOval(x+40, y+40, 70, 100); 。
//6.画左上脚 。
g.setColor(Color.green); 。
g.fillOval(x+15, y+60, 30, 10); 。
//7.画右上脚 。
g.fillOval(x+105, y+60, 30, 10); 。
//8.画左下脚 。
g.fillOval(x+15, y+110, 30, 10); 。
//9.画右下脚 。
g.fillOval(x+105, y+110, 30, 10); 。
//10.画尾巴 。
g.setColor(Color.black); 。
g.drawLine(x+70,y+140,x+130,y+210); 。
g.drawOval(x+95, y+150, 30, 30); 。
}
//覆盖JPanel的paint方法 。
//Graphics 是绘图的重要类。你可以把他理解成一只画笔 。
public void paint(Graphics g){ 。
//1.调用父类函数完成初始化任务 。
//这句话不能少 。
super.paint(g); 。
//2.画乌龟,调用方法即可 。
this.drawTortoise(50, 50, g); 。
}
}
//定义一个乌龟类
class Tortoise { 。
//表示乌龟的横坐标 。
int x = 0; 。
//表示乌龟的纵坐标 。
int y = 0; 。
public int getX() { 。
return x; 。
}
public void setX(int x) { 。
this.x = x; 。
}
public int getY() { 。
return y; 。
}
public void setY(int y) { 。
this.y = y; 。
}
public Tortoise(int x, int y){ 。
this.x = x; 。
this.y = y; 。
}
首先,必须有一个GUI的类,让它继承JPanel类(javax.swing.JPanel);
让这个类实现MouseListener接口(java.awt.event.MouseListener),并实现此接口的所有方法;
其中有一个mouseClicked(MouseEvent e)方法,就是当该JPanel被鼠标点击时所调用的方法;在此方法中写上修改画笔颜色、字体的代码;
最后,由于继承了JPanel类,故可以重写paint(Graphics g)方法,在此方法中加入一些绘制方法。
示例代码如下:
package com;
import java.awt.*;。
import java.awt.event.*;。
import javax.swing.*;。
public class Client extends JPanel implements MouseListener {。
private JFrame f;。
private Color color;。
private Font font;。
//为了方便,可以增加一个状态变量。
private int state=0;。
public Client(){。
f=new JFrame("Test");。
//此句修改JPanel大小。
setPreferredSize(new Dimension(400,300));。
setBackground(Color.white);。
f.add(this);
//此句让JFrame适应JPanel大小。
f.pack();
f.setResizable(false);。
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);。
//此句为JPanel对象设置了鼠标事件监听器(MouseListener)。
addMouseListener(this);。
color=Color.black;。
font=new Font("Arial",Font.PLAIN,12);。
f.setVisible(true);。
}
public void paint(Graphics g){。
super.paint(g);。
//这2行代码根据成员变量color与font设置了画笔的颜色与字体,可由外部方法更改。
g.setColor(color);。
g.setFont(font);。
//以下为自定义的绘制操作。
g.fillRect(50,50,60,45);。
g.drawString("Hello this is the test text",50,120);。
}
public static void main(String[] args){。
Client c=new Client();。
//此为循环重绘的代码
while(true){
try{
//每40毫秒(25分之1秒)重绘一次。
Thread.sleep(40);。
}catch(Exception e){。
e.printStackTrace();。
}
//调用重绘方法
c.repaint();。
}
}
public void stateChanged(){。
switch(state){。
case 0://状态0
color=Color.black;。
font=new Font("Arial",Font.PLAIN,12);。
break;
case 1://状态1
color=Color.blue;。
font=new Font("Century Gothic",Font.BOLD,12);。
break;
default://此为无效状态。
}
}
public void mouseClicked(MouseEvent e) {。
//此方法在鼠标点击JPanel时自动调用。
//此句规定了成员变量state的2种状态,即0,1。
state=state>=1?0:state+1;。
//下面的方法修改了成员变量color和font,从而实现画笔颜色与字体的变更。
stateChanged();。
}
public void mouseEntered(MouseEvent e) {}。
public void mouseExited(MouseEvent e) {}。
public void mousePressed(MouseEvent e) {}。
public void mouseReleased(MouseEvent e) {}。
效果:
如果想要让不同的部分绘制成不同的颜色或字体,可在成员变量中增加更多的类似于color与font的对象,仿照上述代码调用。
class Stack_Float。
float nums[];。
int top;
Stack_Float()。
{
nums = new float[50];。
top = -1;。
}
boolean IsEmpty()。
{
if(top == -1)。
return true;。
else
return false;。
}
float Pop_Stack()。
{
if(top==-1)。
{
return 0;。
}
top--;
return nums[top + 1];。
}
float GetTop()。
{
return nums[top];。
}
void Push_Stack(float num)。
{
if(top == 49)。
return;。
top++;
nums[top] = num;。
}
/*****************************************************************************/。
class Stack_Char。
char str[];。
int top;
Stack_Char()。
{
str = new char[50];。
top = -1;。
}
boolean IsEmpty()。
{
if(top==-1)。
return true;。
else
return false;。
}
void Push_Stack(char ch)。
{
if(top == 49)。
return;。
top++;
str[top] = ch;。
}
char Pop_Stack()。
{
if(top == -1)。
return '\0';。
top--;
return str[top + 1];。
}
char GetTop()。
{
if(top == -1)。
{
System.out.print("error");。
System.exit(0);。
}
return str[top];。
}
/*****************************************************************************/。
public class jisuanqi extends javax.swing.JFrame。
String show = "";。
public jisuanqi() 。
{
initComponents();。
}
char[] TranSmit(char str[])。
{
char houzhui[] = new char[50]; //存放后缀表达式的字符串。
int i = 0,j = 0;。
char c = str[i];。
Stack_Char s = new Stack_Char(); //存放运算符的栈。
while(c != '=') //对算术表达式扫描未结束时。
{
if(c >= '0' && c <= '9')。
{
while(c >= '0' && c <= '9')//数字直接入栈。
{
houzhui[j]=c;。
j++;
i++;
c=str[i];
}
houzhui[j]='#';//用#隔开数字。
j++;
}
switch(c) //扫描到运算符时。
{
case '+':
case '-':
case '*':
case '/':
if(s.IsEmpty() == true) //栈空,直接入栈。
{
s.Push_Stack(c);。
i++;
c=str[i];
break;。
}
if(ComPare(s.GetTop(),c) == -1)。
{。
s.Push_Stack(c); //入栈。
i++;
c=str[i];
break;。
}。
if(ComPare(s.GetTop(),c) == 1)。
{。
houzhui[j]=s.Pop_Stack();//出栈元素存入后缀表达式。
j++;
break;。
}。
}
}
while(s.IsEmpty() != true)//把剩余的运算符直接出栈。
{
houzhui[j]=s.Pop_Stack(); 。
j++;
}
houzhui[j] = '=';//后缀表达式后面加 =。
j++;
houzhui[j] = '\0';。
j++;
return houzhui;。
}
float Count(char str[])。
{
Stack_Float s = new Stack_Float();//定义存放数字的栈。
char c = str[0];。
int i = 0,j = 0;。
float result = 0,temp,left,right;。
while(c != '=') //未扫描到 = 时。
{
if(c >= '0' && c <= '9')//扫描到数字。
{
temp = 0;
while(c != '#')//未读到分隔符时。
{
temp = temp * 10 + c - '0';。
i++;
c = str[i];。
}
s.Push_Stack(temp);//进栈。
}
switch(c)//扫描到运算符时。
{
case '+':
{
result = s.Pop_Stack() + s.Pop_Stack();//2个数字出栈相加。
s.Push_Stack(result);//最后得数进栈。
break;
}
case '-':
{
right = s.Pop_Stack();//右操作数出栈。
left = s.Pop_Stack();//左操作数出栈。
result = left - right;。
s.Push_Stack(result);。
break;
}
case '*':
{
result = s.Pop_Stack() * s.Pop_Stack();//2个数字出栈相乘。
s.Push_Stack(result);。
break;
}
case '/':
{
right = s.Pop_Stack();//右操作数出栈。
left = s.Pop_Stack();//左操作数出栈。
result = left / right;。
s.Push_Stack(result);。
break;
}
}
i++;
c = str[i];
}
return result;。
}
int ComPare(char a,char b) //判断运算符的优先级函数。
{
int s[][] =。
{// 栈顶元素高于算术表达式中的元素时, 返回 1,否则返回 -1。
{1,1,-1,-1},
{1,1,-1,-1},
{1,1,1,1},
{1,1,1,1},
};
char x1[]={'+','-','*','/'};//栈顶元素。
char x2[]={'+','-','*','/'};//算术表达式中的元素。
int k=0,m,n = 0;。
for(m=0;m<4;m++) //查找2个进行比较的运算符在表中的位置,并返回比较结果。
{
for(n=0;n<4;n++)。
{
if(x1[m]==a&&x2[n]==b)。
{
k=1;break; //找到比较结果后,跳出循环。
}
}
if(k==1)
break;
}
return s[m][n];//返回比较结果。
}
/*****************************************************************************/。
@SuppressWarnings("unchecked")。
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents。
private void initComponents() {。
text = new javax.swing.JTextField();。
jButton1 = new javax.swing.JButton();。
jButton2 = new javax.swing.JButton();。
jButton3 = new javax.swing.JButton();。
jButton4 = new javax.swing.JButton();。
jButton5 = new javax.swing.JButton();。
jButton6 = new javax.swing.JButton();。
jButton7 = new javax.swing.JButton();。
jButton8 = new javax.swing.JButton();。
jButton9 = new javax.swing.JButton();。
jButton10 = new javax.swing.JButton();。
jButton11 = new javax.swing.JButton();。
jButton12 = new javax.swing.JButton();。
jButton13 = new javax.swing.JButton();。
jButton14 = new javax.swing.JButton();。
jButton21 = new javax.swing.JButton();。
jButton22 = new javax.swing.JButton();。
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);。
getContentPane().setLayout(null);。
getContentPane().add(text);。
text.setBounds(10, 10, 270, 30);。
jButton1.setText("1");。
jButton1.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton1ActionPerformed(evt);。
}
});
getContentPane().add(jButton1);。
jButton1.setBounds(10, 50, 60, 25);。
jButton2.setText("2");。
jButton2.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton2ActionPerformed(evt);。
}
});
getContentPane().add(jButton2);。
jButton2.setBounds(80, 50, 60, 25);。
jButton3.setText("3");。
jButton3.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton3ActionPerformed(evt);。
}
});
getContentPane().add(jButton3);。
jButton3.setBounds(150, 50, 60, 25);。
jButton4.setText("4");。
jButton4.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton4ActionPerformed(evt);。
}
});
getContentPane().add(jButton4);。
jButton4.setBounds(220, 50, 60, 25);。
jButton5.setText("5");。
jButton5.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton5ActionPerformed(evt);。
}
});
getContentPane().add(jButton5);。
jButton5.setBounds(10, 80, 60, 25);。
jButton6.setText("6");。
jButton6.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton6ActionPerformed(evt);。
}
});
getContentPane().add(jButton6);。
jButton6.setBounds(80, 80, 60, 25);。
jButton7.setText("7");。
jButton7.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton7ActionPerformed(evt);。
}
});
getContentPane().add(jButton7);。
jButton7.setBounds(150, 80, 60, 25);。
jButton8.setText("8");。
jButton8.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton8ActionPerformed(evt);。
}
});
getContentPane().add(jButton8);。
jButton8.setBounds(220, 80, 60, 25);。
jButton9.setText("9");。
jButton9.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton9ActionPerformed(evt);。
}
});
getContentPane().add(jButton9);。
jButton9.setBounds(10, 110, 60, 25);。
jButton10.setText("0");。
jButton10.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton10ActionPerformed(evt);。
}
});
getContentPane().add(jButton10);。
jButton10.setBounds(80, 110, 60, 25);。
jButton11.setText("+");。
jButton11.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton11ActionPerformed(evt);。
}
});
getContentPane().add(jButton11);。
jButton11.setBounds(150, 110, 60, 25);。
jButton12.setText("-");。
jButton12.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton12ActionPerformed(evt);。
}
});
getContentPane().add(jButton12);。
jButton12.setBounds(220, 110, 60, 25);。
jButton13.setText("*");。
jButton13.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton13ActionPerformed(evt);。
}
});
getContentPane().add(jButton13);。
jButton13.setBounds(10, 140, 60, 25);。
jButton14.setText("/");。
jButton14.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton14ActionPerformed(evt);。
}
});
getContentPane().add(jButton14);。
jButton14.setBounds(80, 140, 60, 25);。
jButton21.setText("CE");。
jButton21.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton21ActionPerformed(evt);。
}
});
getContentPane().add(jButton21);。
jButton21.setBounds(150, 140, 60, 25);。
jButton22.setText("=");。
jButton22.addActionListener(new java.awt.event.ActionListener() {。
public void actionPerformed(java.awt.event.ActionEvent evt) {。
jButton22ActionPerformed(evt);。
}
});
getContentPane().add(jButton22);。
jButton22.setBounds(220, 140, 60, 25);。
pack();。
}// </editor-fold>//GEN-END:initComponents。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed。
show += "1";。
text.setText(show);。
}//GEN-LAST:event_jButton1ActionPerformed。
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed。
show += "2";。
text.setText(show);。
}//GEN-LAST:event_jButton2ActionPerformed。
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed。
show += "3";。
text.setText(show);。
}//GEN-LAST:event_jButton3ActionPerformed。
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed。
show += "4";。
text.setText(show);。
}//GEN-LAST:event_jButton4ActionPerformed。
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed。
show += "5";。
text.setText(show);。
}//GEN-LAST:event_jButton5ActionPerformed。
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed。
show += "6";。
text.setText(show);。
}//GEN-LAST:event_jButton6ActionPerformed。
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed。
show += "7";。
text.setText(show);。
}//GEN-LAST:event_jButton7ActionPerformed。
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed。
show += "8";。
text.setText(show);。
}//GEN-LAST:event_jButton8ActionPerformed。
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed。
show += "9";。
text.setText(show);。
}//GEN-LAST:event_jButton9ActionPerformed。
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed。
show += "0";。
text.setText(show);。
}//GEN-LAST:event_jButton10ActionPerformed。
private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton13ActionPerformed。
show += "*";。
text.setText(show);。
}//GEN-LAST:event_jButton13ActionPerformed。
private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton14ActionPerformed。
show += "/";。
text.setText(show);。
}//GEN-LAST:event_jButton14ActionPerformed。
private void jButton21ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton21ActionPerformed。
show = "";
text.setText("");。
}//GEN-LAST:event_jButton21ActionPerformed。
private void jButton22ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton22ActionPerformed。
show += "=";。
text.setText(show);。
char str1[] = new char[50];。
char str2[] = new char[50];。
float result = 0;。
str1 = show.toCharArray();。
str2 = TranSmit(str1);。
result = Count(str2);。
text.setText("" + result);。
show = "";
}//GEN-LAST:event_jButton22ActionPerformed。
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton12ActionPerformed。
show += "-";
text.setText(show);。
}//GEN-LAST:event_jButton12ActionPerformed。
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed。
show += "+";
text.setText(show);。
}//GEN-LAST:event_jButton11ActionPerformed。
public static void main(String args[]) 。
{
jisuanqi j = new jisuanqi();。
j.setBounds(300, 300, 300, 195);。
j.setVisible(true);。
}
// Variables declaration - do not modify//GEN-BEGIN:variables。
private javax.swing.JButton jButton1;。
private javax.swing.JButton jButton10;。
private javax.swing.JButton jButton11;。
private javax.swing.JButton jButton12;。
private javax.swing.JButton jButton13;。
private javax.swing.JButton jButton14;。
private javax.swing.JButton jButton2;。
private javax.swing.JButton jButton21;。
private javax.swing.JButton jButton22;。
private javax.swing.JButton jButton3;。
private javax.swing.JButton jButton4;。
private javax.swing.JButton jButton5;。
private javax.swing.JButton jButton6;。
private javax.swing.JButton jButton7;。
private javax.swing.JButton jButton8;。
private javax.swing.JButton jButton9;。
private javax.swing.JTextField text;。
// End of variables declaration//GEN-END:variables。
import java.awt.BorderLayout;。
import java.awt.Container;。
import java.awt.Font;。
import java.awt.GridLayout;。
import java.awt.Insets;。
import java.awt.event.ActionEvent;。
import java.awt.event.ActionListener;。
import java.awt.event.MouseAdapter;。
import java.awt.event.MouseEvent;。
import javax.swing.JButton;。
import javax.swing.JFrame;。
import javax.swing.JLabel;。
import javax.swing.JMenu;。
import javax.swing.JMenuBar;。
import javax.swing.JMenuItem;。
import javax.swing.JPanel;。
import javax.swing.Timer;。
public class ScanLei1 extends JFrame implements ActionListener{。
private static final long serialVersionUID = 1L;。
private Container contentPane;。
private JButton btn;。
private JButton[] btns;。
private JLabel b1;。
private JLabel b2;。
private JLabel b3;。
private Timer timer;。
private int row=9;。
private int col=9;。
private int bon=10;。
private int[][] a;。
private int b;。
private int[] a1;。
private JPanel p,p1,p2,p3;。
public ScanLei1(String title){。
super(title);。
contentPane=getContentPane();。
setSize(297,377);。
this.setBounds(400, 100, 400, 500);。
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);。
timer =new Timer(1000,(ActionListener) this);。
a = new int[row+2][col+2];。
initGUI();
}
public void initGUI(){。
p3=new JPanel();。
b=bon;
JMenuBar menuBar=new JMenuBar();。
JMenu menu1=new JMenu("游戏");。
JMenu menu2=new JMenu("帮助");。
JMenuItem mi1=new JMenuItem("初级");。
JMenuItem mi2 = new JMenuItem("中级");。
JMenuItem mi3 =new JMenuItem("高级");。
mi1.addActionListener(this);。
menu1.add(mi1);。
mi2.addActionListener(this);。
menu1.add(mi2);。
mi3.addActionListener(this);。
menu1.add(mi3);。
menuBar.add(menu1);。
menuBar.add(menu2);。
p3.add(menuBar);。
b1=new JLabel(bon+"");。
a1=new int[bon];。
btn =new JButton("开始");。
btn.addActionListener(this);。
b2=new JLabel("0");。
b3=new JLabel("");。
btns=new JButton[row*col];。
p=new JPanel();。
p.setLayout(new BorderLayout());。
contentPane.add(p);。
p.add(p3,BorderLayout.NORTH);。
//combo=new JComboBox(new Object[]{"初级","中级","高级"} );。
//加监听
/*combo.addItemListener(new ItemListener(){ 。
}});*/
p1=new JPanel();。
//在那个位置
//(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);。
p1.add(b1);
p1.add(btn);
p1.add(b2);
p1.add(b3);
p.add(p3,BorderLayout.NORTH);。
p.add(p1,BorderLayout.CENTER);。
p2=new JPanel();。
p2.setLayout(new GridLayout(row,col,0,0));。
for(int i=0;i<row*col;i++){。
btns[i]=new JButton("");。
btns[i].setMargin(new Insets(0,0,0,0));。
btns[i].setFont(new Font(null,Font.BOLD,25));。
btns[i].addActionListener(this);。
btns[i].addMouseListener(new NormoreMouseEvent());。
p2.add(btns[i]);。
}
contentPane.add(p,BorderLayout.NORTH);。
contentPane.add(p2,BorderLayout.CENTER); 。
}
public void go(){ 。
setVisible(true);。
}
public static void main(String[] args){。
new ScanLei1("扫雷").go(); 。
}
public void out(int[][] a,JButton[] btns,ActionEvent e,int i,int x,int y){。
int p=1;。
if(a[x][y]==0){。
a[x][y]=10;。
btns[i].setEnabled(false); //33 。
for(int l=y-1;l<=y+1;l++){。
int m=x-1-1;。
int n=l-1;。
p=1;
System.out.println(a[1][2]);。
if(n>-1&&n<col&&m>-1&&m<row)。
{
for(int q=0;q<row&&p==1;q++){//col-->row;。
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){。
if(a[x-1][l]!=0&&a[x-1][l]!=10){。
btns[n+col*q].setText(a[x-1][l]+"");。
a[x-1][l]=10;。
btns[n+col*q].setEnabled(false);。
}。
else if(a[x-1][l]==0){。
//a[x-1][l]=10;。
btns[n+col*q].setEnabled(false);。
out(a,btns,e,n+col*q,x-1,l); ////55////。
a[x-1][l]=10;。
btns[n+col*q].setEnabled(false);。
}。
p=0;。
}
}
}
p=1;
m=x;
if(n>-1&&n<col&&m>-1&&m<col)。
{
for(int q=0;q<row&&p==1;q++){。
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){。
if(a[x+1][l]!=0&&a[x+1][l]!=10){。
btns[n+col*q].setText(a[x+1][l]+"");。
a[x+1][l]=10;。
btns[n+col*q].setEnabled(false);。
}
else if(a[x+1][l]==0){。
out(a,btns,e,n+col*q,x+1,l);///55//// 。
a[x+1][l]=10;。
btns[n+col*q].setEnabled(false);。
}
p=0;
}
}
}
}
int m=x-1;。
int n=y-1-1;。
p=1;。
if(n>-1&&n<col&&m>-1&&m<col)。
{
for(int q=0;q<row&&p==1;q++){。
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){。
if(a[x][y-1]!=0&&a[x][y-1]!=10){。
btns[n+col*q].setText(a[x][y-1]+"");。
a[x][y-1]=10;。
btns[n+col*q].setEnabled(false);。
}
else if(a[x][y-1]==0){。
out(a,btns,e,n+col*q,x,y-1);。
a[x][y-1]=10;。
btns[n+col*q].setEnabled(false);。
}
p=0;
}
}
}
p=1;。
m=x-1;。
n=y+1-1;。
if(n>-1&&n<col&&m>-1&&m<col)。
{
for(int q=0;q<row&&p==1;q++){。
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){。
if(a[x][y+1]!=0&&a[x][y+1]!=10){。
btns[n+col*q].setText(a[x][y+1]+"");。
a[x][y+1]=10;。
btns[n+col*q].setEnabled(false);。
}
else if(a[x][y+1]==0){。
out(a,btns,e,n+col*q,x,y+1); 。
a[x][y+1]=10;。
btns[n+col*q].setEnabled(false);。
}
p=0;
}
}
}
}
}
public void actionPerformed(ActionEvent e) {。
if(e.getActionCommand()=="初级"){。
row=9;
col=9;
bon=10;
a1=new int[bon];。
b=bon;
//setSize(297,377);。
a = new int[row+2][col+2];。
this.remove(p2);。
timer.stop();。
b1.setText("10");。
b2.setText("0");。
b3.setText("");。
btns=new JButton[row*col];。
p2=new JPanel();。
p2.setLayout(new GridLayout(row,col,0,0));。
for(int i=0;i<row*col;i++){。
btns[i]=new JButton(" ");。
btns[i].setMargin(new Insets(0,0,0,0));。
btns[i].setFont(new Font(null,Font.BOLD,25));。
btns[i].addActionListener(this);。
btns[i].addMouseListener(new NormoreMouseEvent());。
p2.add(btns[i]);。
}
contentPane.add(p2,BorderLayout.CENTER);。
//setSize(297,377);。
this.pack();。
for(int i=0;i<row*col;i++){。
btns[i].setText(" ");。
btns[i].setEnabled(true);。
}
for(int i=0;i<row+2;i++){。
for(int j=0;j<col+2;j++){。
a[i][j]=0;。
}
}
}else if(e.getActionCommand()=="中级"){。
row=16;
col=16;
bon=40;
//setSize(33*col,33*row+80);。
a1=new int[bon];。
a = new int[row+2][col+2];。
b=bon;
this.remove(p2);。
timer.stop();。
b1.setText("40");。
b2.setText("0");。
b3.setText("");。
btns=new JButton[row*col];。
p2=new JPanel();。
p2.setLayout(new GridLayout(row,col,0,0));。
for(int i=0;i<row*col;i++){。
btns[i]=new JButton(" ");。
btns[i].setMargin(new Insets(0,0,0,0));。
btns[i].setFont(new Font(null,Font.BOLD,25));。
btns[i].addActionListener(this);。
btns[i].addMouseListener(new NormoreMouseEvent());。
p2.add(btns[i]);。
}
contentPane.add(p2,BorderLayout.CENTER);。
this.pack();。
//setSize(33*col,33*row+80);。
for(int i=0;i<row*col;i++){。
btns[i].setText("");。
btns[i].setEnabled(true);。
}
for(int i=0;i<row+2;i++){。
for(int j=0;j<col+2;j++){。
a[i][j]=0;。
}
}
}else if(e.getActionCommand()=="高级"){。
row=16;
col=32;
bon=99;
setSize(33*col,33*row+80);。
a1=new int[bon];。
a = new int[row+2][col+2];。
b=bon;
this.remove(p2);。
timer.stop();。
b1.setText("99");。
b2.setText("0");。
b3.setText("");。
btns=new JButton[row*col];。
p2=new JPanel();。
p2.setLayout(new GridLayout(row,col,0,0));。
for(int i=0;i<row*col;i++){。
btns[i]=new JButton(" ");。
btns[i].setMargin(new Insets(0,0,0,0));。
btns[i].setFont(new Font(null,Font.BOLD,25));。
btns[i].addActionListener(this);。
btns[i].addMouseListener(new NormoreMouseEvent());。
p2.add(btns[i]);。
}
contentPane.add(p2,BorderLayout.CENTER);。
//setSize(33*col,33*row+80);。
this.pack();。
for(int i=0;i<row*col;i++){。
btns[i].setText("");。
btns[i].setEnabled(true);。
}
for(int i=0;i<row+2;i++){。
for(int j=0;j<col+2;j++){。
a[i][j]=0;。
}
}
}
if(e.getSource()==btn){。
timer.start();。
b=bon;
b3.setText("");。
//System.out.println(bon);。
//清空
for(int i=0;i<row*col;i++){。
btns[i].setText("");。
btns[i].setEnabled(true);。
}
for(int i=0;i<row+2;i++){。
for(int j=0;j<col+2;j++){。
a[i][j]=0;。
}
}
//产生随机数
for(int i=0;i<bon;i++)。
{ int p=1;。
int m=(int)(Math.random()*row*col);。
while(p==1){。
int l=1;。
int j;
for( j=0;j<i&&l==1;j++){。
if(a1[j]==m){。
m=(int)(Math.random()*row*col); 。
l=0;。
}
}
if(j==i){
a1[i]=m;
p=0;
}
}
}
b1.setText(bon+"");。
b2.setText("0"); 。
//布雷
for(int i=0;i<bon;i++){ 。
int x=(a1[i]/col+1);。
int y=(a1[i]%col+1);。
a[x][y]=100;。
}
for(int i=0;i<row+2;i++){。
for(int j=0;j<col+2;j++){。
if(i==0||j==0||i==row+1||j==col+1){。
a[i][j]=0; 。
}
}
}
for(int i=1;i<=row;i++){。
for(int j=1;j<=col;j++){。
if(a[i][j]!=100){。
for(int l=j-1;l<=j+1;l++){。
if(a[i-1][l]==100){。
a[i][j]++;。
}
if(a[i+1][l]==100){。
a[i][j]++;。
}
}
if(a[i][j-1]==100){。
a[i][j]++;。
}
if(a[i][j+1]==100){。
a[i][j]++;。
}
}
}
}
}
if(e.getSource()==timer)。
{
String time=b2.getText().trim();。
int t=Integer.parseInt(time);。
//System.out.println(t);。
if(t>=600){。
timer.stop();。
}else{
t++;
b2.setText(t+"");。
}
}
for(int i=0;i<col*row;i++){。
if(btns[i].getText()!="★")。
{
int x=i/col+1;。
int y=i%col+1;。
if(e.getSource()==btns[i]&&a[x][y]==100){。
btns[i].setText("★");。
btns[i].setEnabled(false);。
a[x][y]=10;。
for(int k=0;k<col*row;k++){。
int m1=k/col+1;。
int n1=k%col+1;。
if(a[m1][n1]!=10&&btns[k].getText()=="★"){。
btns[k].setText("*o*");。
}
}
for(int j=0;j<col*row;j++){。
int m=j/col+1;。
int n=j%col+1;。
if(a[m][n]==100){。
btns[j].setText("★");。
btns[j].setEnabled(false); 。
b3.setText("你输了 !!");。
}
btns[j].setEnabled(false);。
a[m][n]=10;。
}
timer.stop(); 。
}
else if(e.getSource()==btns[i]){。
if(a[x][y]==0){。
out(a,btns,e,i,x,y);。
a[x][y]=10;。
btns[i].setEnabled(false); 。
}
if(a[x][y]!=0&&a[x][y]!=10){。
btns[i].setText(a[x][y]+"");。
btns[i].setEnabled(false);。
a[x][y]=10;。
}
}
}else if(btns[i].getText()=="★"){。
}
}
}
class NormoreMouseEvent extends MouseAdapter{。
public void mouseClicked(MouseEvent e) {。
System.out.println(b);。
for(int i=0;i<col*row;i++){。
int x1=i/col+1;。
int y1=i%col+1;。
if(e.getSource()==btns[i]&&btns[i].getText()!="★"&&a[x1][y1]!=10)。
{
if(e.getButton()==MouseEvent.BUTTON3){。
btns[i].setText("★");。
b--;
if(b==0){。
int flag=0;。
for(int j=0;j<col*row;j++){。
int x=j/col+1;。
int y=j%col+1;。
if(a[x][y]==100&&btns[j].getText()=="★"){。
flag++;。
}
}
if(flag==bon){。
timer.stop();。
b3.setText("你赢了!");。
}
}
b1.setText(b+"");。
}
}else if(e.getSource()==btns[i]&&btns[i].getText()=="★"&&a[x1][y1]!=-1){。
if(e.getButton()==MouseEvent.BUTTON3){。
btns[i].setText("");。
b++;
if(b>bon){。
b1.setText(bon+""); 。
}
else{
b1.setText(b+"");。
} 。
btns[i].setEnabled(true);。
}
}
}
}
}
import java.awt.*;。
import java.awt.event.MouseEvent;。
import java.awt.event.MouseListener;。
import java.awt.event.WindowAdapter;。
import java.awt.event.WindowEvent;。
public class design extends Frame {。
private String title = "笑脸";。
design() {
this.setTitle("变脸小程序");。
}
public void paint(Graphics g) {。
g.drawArc(100, 200, 100, 60, 0, 180);。
g.drawArc(260, 200, 100, 60, 0, 180);。
if (!title.equals("笑脸")) {。
g.drawArc(180, 260, 100, 60, 0, -180); // 画弧---嘴巴。
title = "笑脸";。
} else {
g.drawArc(180, 260, 100, 60, 0, 180); // 画弧---嘴巴。
title = "哭脸";。
}
g.drawString(title, 80, 100);。
g.drawOval(80, 100, 300, 300);。
}
public static void main(String args[]) {。
design D = new design();。
D.setSize(new Dimension(500, 500));。
D.addWindowListener(new WindowAdapter() {。
public void windowClosing(WindowEvent e) {。
System.exit(0);。
}
});
D.addMouseListener(new MouseClick(D));。
D.setVisible(true);。
}
class MouseClick implements MouseListener {// 实现鼠标监听事件。
private design d;。
public MouseClick() {。
}
public MouseClick(design d) {。
this.d = d;
}
public void mouseClicked(MouseEvent e) {// 这这里做鼠标单机处理。
// TODO Auto-generated method stub。
if (d != null) {。
d.repaint();。
}
}
public void mouseEntered(MouseEvent e) {。
// TODO Auto-generated method stub。
}
public void mouseExited(MouseEvent e) {。
// TODO Auto-generated method stub。
}
public void mousePressed(MouseEvent e) {。
// TODO Auto-generated method stub。
}
public void mouseReleased(MouseEvent e) {。
// TODO Auto-generated method stub。
}
已经做好了,顺便帮你调整一下格式。