java重置功能_大神帮忙看下如何实现【重置】键的功能

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package 流光;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class L extends JFrame

{

static JButton bnt1 = new JButton("重置");

static JButton bnt2 = new JButton("连线");

static JPanel pan = new MyPanel();

static JPanel pan1 = new MyPanel1();

static L frm = new L();

static int i=0,j=0,z=0;

static int[][] a = new int[1000][2];

public static void main(String[] args) {

frm.setVisible(true);

frm.setTitle("算法作业");

frm.setBounds(250, 250, 700, 580);

pan.setBounds(0, 0, 700, 500);

pan.setBackground(Color.WHITE);

frm.add(pan);

pan1.setBackground(Color.green);

pan1.setBounds(0, 500, 700, 500);

frm.add(pan1);

pan.addMouseMotionListener(new MyPanel());

pan.addMouseListener(new MyPanel());

frm.setLayout(null);

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

static class MyPanel extends JPanel implements MouseMotionListener,MouseListener

{

public void mouseMoved(MouseEvent e)

{

}

public void mouseDragged(MouseEvent e)

{

}

public void mouseReleased(MouseEvent e)

{

}

public void mousePressed(MouseEvent e)

{

int x1,y1;

x1=e.getX();

y1=e.getY();

a[i][j]=x1;

j++;

a[i][j]=y1;

j--;

i++;

z++;

Graphics g=pan.getGraphics();

g.setColor(Color.red);

g.fillOval(x1,y1,8,8);

System.out.println("我是z"+z);

}

public void mouseEntered(MouseEvent e)

{

}

public void mouseExited(MouseEvent e)

{

}

public void mouseClicked(MouseEvent e)

{

}

}

static class MyPanel1 extends JPanel implements ActionListener

{

MyPanel1()

{

this.add(bnt1);

bnt1.addActionListener(this);

this.add(bnt2);

bnt2.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

JButton bt = (JButton)e.getSource();

if(bt == bnt2)

{

dianxu(a,z);

Kuaibao(a,0,z-1);

Kuaibao(a,z-1,0);

}

if(bt == bnt1)

{

}

}

}

static int [][]DingDian=new int[200][2];//用于存放凸边形的顶点

static int DingDnum=0; //记录存入定点数量

static int [][]BDD=new int[200][4];//存放凸边形边的双点

static int BDDnum=0;//记录已经存入的双点数

static int abc=0;//全局变量,用来记录划边顺序

static void dianxu(int a[][],int n) //对已经输入的点数组进行排序

{//存放点的数组P[], 点的个数n

int tema,temp2,i,j,min,px,pxnum;

for(i=0;i<=n-2;i++) //按x坐标排序

{

min=i;

for(j=i+1;j<=n-1;j++)

if(a[j][0]

min=j;

tema=a[i][0];temp2=a[i][1];

a[i][0]=a[min][0]; a[i][1]=a[min][1];

a[min][0]=tema; a[min][1]= temp2;

}

//数组两端相同x按|y|排序

px=a[0][0]; pxnum=1; //前端排序

while(a[pxnum][0]==px)

pxnum++;

for(i=0;i<=pxnum-2;i++)

{

min=i;

for(j=i+1;j<=pxnum-1;j++)

if( a[j][1] < a[min][1] )

min=j;

tema=a[i][0];temp2=a[i][1];

a[i][0]=a[min][0]; a[i][1]=a[min][1];

a[min][0]=tema; a[min][1]= temp2;

}

px=a[n-1][0]; pxnum=1; //后端排序

while(a[n-1-pxnum][0]==px)

pxnum++;

for(i=n-pxnum;i<=n-2;i++)

{

min=i;

for(j=i+1;j<=n-1;j++)

if( a[j][1] < a[min][1] )

min=j;

tema=a[i][0];temp2=a[i][1];

a[i][0]=a[min][0]; a[i][1]=a[min][1];

a[min][0]=tema; a[min][1]= temp2;

}

}

static void Kuaibao(int P2[][],int l,int r)

{//P[]:存放点的数组,l,r数组中点起始与终止坐标Rtmin,Ltmax用来存放最大最小的t值

int t,Ltmax=0,Lnum=0,LL=0,i,imax;

//连接p[l],p[r]

i=(l

imax=(l>r)?l:r;

for(i=i+1;i

{

t=P2[l][0]*P2[r][1]+P2[i][0]*P2[l][1]+P2[r][0]*P2[i][1]-P2[i][0]*P2[r][1]-P2[r][0]*P2[l][1]-P2[l][0]*P2[i][1];

// 判断t正负,t>0,Lnum++;(Lnum初值为0)

if(t>Ltmax)

{

Lnum++; LL=i; Ltmax=t;

}

}

if(Lnum>0)

{

DingDian[DingDnum][0]=P2[LL][0]; DingDian[DingDnum][1]=P2[LL][1];

DingDnum++; Kuaibao(P2,l,LL);

Kuaibao(P2,LL,r);

}

else//t=0时,将P[l]、P[r]放入边集

{

BDD[BDDnum][0]=P2[l][0]; BDD[BDDnum][1]=P2[l][1];

BDD[BDDnum][2]=P2[r][0]; BDD[BDDnum][3]=P2[r][1];

Graphics g=pan.getGraphics();

g.drawLine(BDD[BDDnum][0], BDD[BDDnum][1], BDD[BDDnum][2], BDD[BDDnum][3]);

try {Thread.currentThread();

Thread.sleep(100);}catch(Exception a){}

System.out.println("我是BDDnum "+BDDnum);

BDDnum++;//记录已经存入的双点数

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值