📄 csy_queue.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 + -