⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csy_queue.java

📁 循环队列演示
💻 JAVA
字号:
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
//加入颜色类
import java.awt.*;
import java.awt.GridBagLayout;
public class csy_queue extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;
    private Queue myqueue=null;
	private JButton jbInit = null;

	private JButton jbInsert = null;

	private JButton jbOut = null;

	private JButton jbClear = null;

	private JTextField jtxtIn = null;

	private JLabel jQueuL = null;

	/**
	 * This method initializes jbInit	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private void paintyuansu () {
		  
		 		jContentPane.getGraphics().clearRect(230, 0,240, 240);
		 		//jContentPane.setForeground(Color.red);
		 		
		jContentPane.getGraphics().drawArc(240,20,200,200,0,360);
		 if (!myqueue.isEmpty()){
			 double max1=myqueue.maxsize;
		  for(int i = myqueue.first;i<myqueue.first+myqueue.getLength();i++)
		  { double x=340+100*Math.cos(i/max1*6.28);
		    double y=120+100*Math.sin(i/max1*6.28);
		    jContentPane.getGraphics().drawString(" "+ myqueue.equeue[i%myqueue.maxsize].ele,(int) x,(int)y);
	
		  }
	}}
	private JButton getJbInit() {
		if (jbInit == null) {
			jbInit = new JButton();
			jbInit.setBounds(new Rectangle(15, 60, 100, 26));
			jbInit.setText("初始化队列");
			jbInit.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					//System.out.println("mouseClicked()"); // TODO Auto-generated Event stub mouseClicked()
                      try {
                    	  myqueue = new Queue(Integer.parseInt(JOptionPane.showInputDialog(null,"请输入队列长度","队列",JOptionPane.QUESTION_MESSAGE)));
                    	  jQueuL.setText("队列总长度为"+myqueue.maxsize+"当前有"+myqueue.getLength()+"个元素");
                    	 paintyuansu ();        
                      } catch (Exception ex) {
                    	  JOptionPane.showMessageDialog(null,"输入错误,初始化失败","警告",JOptionPane.INFORMATION_MESSAGE);
                    	
                      }
				}
			});
			
		}
		return jbInit;
	}

	/**
	 * This method initializes jbInsert	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbInsert() {
		if (jbInsert == null) {
			jbInsert = new JButton();
			jbInsert.setBounds(new Rectangle(120, 60, 88, 24));
			jbInsert.setText("插入队列");
			
			jbInsert.addMouseListener(new java.awt.event.MouseListener() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					try {
					if (myqueue==null)
					{ JOptionPane.showMessageDialog(null,"请初始化队列","提醒",JOptionPane.INFORMATION_MESSAGE);
					   					  return;}
					int i = Integer.parseInt(jtxtIn.getText());
				  if (	myqueue.enQueue(new Element(i)))
						  {
					       JOptionPane.showMessageDialog(null,"插入队列成功!","恭喜",JOptionPane.INFORMATION_MESSAGE);
					       jQueuL.setText("队列总长度为"+myqueue.maxsize+"当前有"+myqueue.getLength()+"个元素");
					       
						  }
				  else
					  
				  {
					  JOptionPane.showMessageDialog(null,"对列已经满","警告",JOptionPane.INFORMATION_MESSAGE);
						   
				  }
				  paintyuansu ();
					}
					catch (Exception ex) {
					 JOptionPane.showMessageDialog(null,"输入错误,不能插入队列,只能输入整数,","警告",JOptionPane.INFORMATION_MESSAGE);
			                
						
					}
				}
				public void mousePressed(java.awt.event.MouseEvent e) {
				}
				public void mouseReleased(java.awt.event.MouseEvent e) {
				}
				public void mouseEntered(java.awt.event.MouseEvent e) {
				}
				public void mouseExited(java.awt.event.MouseEvent e) {
				}
			});
			
			
		}
		return jbInsert;
	}

	/**
	 * This method initializes jbOut	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbOut() {
		if (jbOut == null) {
			jbOut = new JButton();
			jbOut.setBounds(new Rectangle(120, 105, 91, 31));
			jbOut.setText("出队列");
			jbOut.addMouseListener(new java.awt.event.MouseListener() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					if (myqueue==null)
					{ JOptionPane.showMessageDialog(null,"请初始化队列","提醒",JOptionPane.INFORMATION_MESSAGE);
					   					  return;}
					Element z = myqueue.deQueue();
				  if (z!=null)
				  JOptionPane.showMessageDialog(null,"出队列的元素是"+z.ele,"提示",JOptionPane.INFORMATION_MESSAGE);
				  else
			    	JOptionPane.showMessageDialog(null,"出队已空","提示",JOptionPane.INFORMATION_MESSAGE);
				    jQueuL.setText("队列总长度为"+myqueue.maxsize+"当前有"+myqueue.getLength()+"个元素");
					  
				    paintyuansu ();
				}
				public void mousePressed(java.awt.event.MouseEvent e) {
				}
				public void mouseReleased(java.awt.event.MouseEvent e) {
				}
				public void mouseEntered(java.awt.event.MouseEvent e) {
				}
				public void mouseExited(java.awt.event.MouseEvent e) {
				}
			});
		}
		return jbOut;
	}

	/**
	 * This method initializes jbClear	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJbClear() {
		if (jbClear == null) {
			jbClear = new JButton();
			jbClear.setBounds(new Rectangle(15, 105, 100, 24));
			jbClear.setText("清空队列");
			jbClear.addMouseListener(new java.awt.event.MouseListener() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					if (myqueue==null)
					{ JOptionPane.showMessageDialog(null,"请初始化队列","提醒",JOptionPane.INFORMATION_MESSAGE);
					   					  return;}
					myqueue.clear();
			JOptionPane.showMessageDialog(null,"对列已空","提示",JOptionPane.INFORMATION_MESSAGE);
			   jQueuL.setText("队列总长度为"+myqueue.maxsize+"当前有"+myqueue.getLength()+"个元素");
			   paintyuansu ();
				}
				public void mousePressed(java.awt.event.MouseEvent e) {
				}
				public void mouseReleased(java.awt.event.MouseEvent e) {
				}
				public void mouseEntered(java.awt.event.MouseEvent e) {
				}
				public void mouseExited(java.awt.event.MouseEvent e) {
				}
			});
		}
		return jbClear;
	}

	/**
	 * This method initializes jtxtIn	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJtxtIn() {
		if (jtxtIn == null) {
			jtxtIn = new JTextField();
			jtxtIn.setBounds(new Rectangle(57, 22, 107, 20));
		}
		return jtxtIn;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				csy_queue thisClass = new csy_queue();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public csy_queue() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(589, 301);
		this.setContentPane(getJContentPane());
		this.setTitle("循环队列");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jQueuL = new JLabel();
			jQueuL.setBounds(new Rectangle(15, 150, 196, 46));
			jQueuL.setText("");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJbInit(), null);
			jContentPane.add(getJbInsert(), null);
			jContentPane.add(getJbOut(), null);
			jContentPane.add(getJbClear(), null);
			jContentPane.add(getJtxtIn(), null);
			jContentPane.add(jQueuL, null);
			jContentPane.addPropertyChangeListener("border",
					new java.beans.PropertyChangeListener() {
						public void propertyChange(java.beans.PropertyChangeEvent e) {
						//	System.out.println("propertyChange(border)"); // TODO Auto-generated property Event stub "border" 
							 paintyuansu ();    
						}
					});
		}
		return jContentPane;
	}
	class Element {
		  int ele;	
		  public Element (int i)
		  {
			  ele=i;
		  }	
	}
		class Queue {	 
			 int first,last,maxsize;
			 Element  equeue[];
			 Queue(int queuesize) {
				 maxsize=queuesize;//队列大小
				 first=last=-1;
				 equeue = new Element[queuesize];
			 }
			    public void clear(){//置空 
				 first=last=-1; 
				 } 

				 public boolean isEmpty(){//判空 
				 if(first==-1)return true; 
				 else return false; 
				 } 

				 public Element getFirst(){//取队列头元素 
				 if(first==-1)return null; 
				 else return equeue [first+1]; 
				 } 

				 public boolean isFull(){//判满 
				 if((last+1)%maxsize==first)return true; 
				 else return false; 
				 } 

				 public boolean enQueue(Element e){//入队 
				 if(this.isFull())return false; //对列满,则不能入队列了
				 if(this.isEmpty()) 
				 first=last=0; 
				 else 
				 last=(last+1)%maxsize; 
				 equeue[last]=e; 
				 return true; 
				 } 

				 public Element deQueue(){//
					// Element t=equeue[first]; //将这一行移动到了下面
					if(this.isEmpty())return null; 
					Element t=equeue[first]; 
				 if(first==last){ 
			//	 equeue[first]=null; 原来有这一行,现在删除了.
				 this.clear(); 
				 return t; 
				 } 
				 equeue[first]=null; 
				 first=(first+1)%maxsize; 
				 return t; 
				 } 

				 public int getLength(){//队列长度 
					 if (first==-1)
					 return 0;
				 if(last>=first)return last-first+1; 
				 else return maxsize-(first-last)+1; 
				 } 


		 }

}  //  @jve:decl-index=0:visual-constraint="10,10"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -