📄 queenframe.java
字号:
import java.awt.Graphics;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.Font;
import java.awt.Image;
public class QueenFrame extends JFrame {
JPanel contentPane;
SortFrame sortframe=new SortFrame();
Cartoon cartoon;
JPanel2 qpanel=new JPanel2();
BorderLayout borderLayout1 = new BorderLayout();
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFileExit = new JMenuItem();
JMenu jMenu1 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem2 = new JMenuItem();
/**********************************************/
JButton okbutton=new JButton("确定" );
JButton startbutton=new JButton("暂停" );
JButton restartbutton=new JButton("重头开始" );
JButton forthbutton=new JButton("单步前进" );
JButton backbutton=new JButton("单步后退" );
JSlider sliderMin=new JSlider(SwingConstants.HORIZONTAL,1,100,1);
JTextField field = new JTextField("1", 10);
int sli;
int slidIn=0,slidDe,cq=1;
public QueenFrame() {
okbutton.setFont(new Font("Timesroman",Font.BOLD,10));
cartoon=new Cartoon(qpanel);
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
setTitle("Frame Title");
jMenuFile.setText("File");
jMenuFileExit.setText("Exit");
jMenuFileExit.addActionListener(new QueenFrame_jMenuFileExit_ActionAdapter(this));
jMenu1.setText("算法演示");
jMenuItem1.setText("快速排序");
jMenuItem1.addActionListener(new QueenFrame_jMenuItem1_actionAdapter(this));
jMenuItem2.setText("八皇后演示");
jMenuItem2.addActionListener(new QueenFrame_jMenuItem2_actionAdapter(this));
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenu1);
jMenuFile.add(jMenuFileExit);
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
setJMenuBar(jMenuBar1);
}
/**
* File | Exit action performed.
*
* @param actionEvent ActionEvent
*/
void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
System.exit(0);
}
public void jMenuItem2_actionPerformed(ActionEvent e) {
cartPopupFrame(); //动画窗口
qpanel.creatQ(1);
qpanel.FanNum(1);
cartoon.playAnimation();
}
public void cartPopupFrame(){
JFrame popupFrame=new JFrame();
JPanel buttonJPanel=new JPanel(new FlowLayout() );
popupFrame.setSize(600,700);
qpanel.setSize(500,500);
popupFrame.getContentPane().setLayout(new BorderLayout());
popupFrame.getContentPane().add(qpanel,BorderLayout.CENTER);
popupFrame.getContentPane().add(buttonJPanel,BorderLayout.SOUTH);
popupFrame.setTitle("仿真开始");
popupFrame.setVisible(true);
//cartoon.playAnimation();
buttonJPanel.add(sliderMin);
buttonJPanel.add(field);
buttonJPanel.add(okbutton);
buttonJPanel.add(startbutton);
buttonJPanel.add(restartbutton);
buttonJPanel.add(forthbutton);
buttonJPanel.add(backbutton);
/************************************************/
okbutton.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent ev){
cq=(int)(Double.parseDouble(field.getText()));
qpanel.creatQ(cq);
qpanel.FanNum(1);
qpanel.fulldraw();
cartoon.playAnimation();
}
});
backbutton.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent ev){
cartoon.stopAnimation();
qpanel.backDraw();
}
});
forthbutton.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent ev){
cartoon.stopAnimation();
qpanel.repaint();
}
});
//startbutton为可变按钮,当按钮按下就会变,初始的为暂停
restartbutton.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent ev){
qpanel.creatQ(cq);
qpanel.FanNum(1);
qpanel.fulldraw();
cartoon.playAnimation();
startbutton.setEnabled(true);
startbutton.setText("暂停"); //点了从头开始后开始按钮变为暂停
}
});
startbutton.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent ev){
String label = ev.getActionCommand();
if(label.equals("开始") ){
cartoon.restart();
}
startbutton.setText("暂停");
restartbutton.setEnabled(true);
if(label.equals("暂停") ){
startbutton.setText("开始");
cartoon.stopAnimation();
}
}
});
sliderMin.setValue(1);
sliderMin.setMajorTickSpacing(10);
sliderMin.setPaintTicks(true);
Dimension dim = new Dimension(72,10);
sliderMin.setPreferredSize(dim);
sliderMin.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev){
startbutton.setEnabled(false);
sli= sliderMin.getValue();
cartoon.slideControl();
System.out.println("slide======"+sli);
cartoon.drawqueen(sli-slidIn);
slidIn=sli;
}
});
}
public void jMenuItem1_actionPerformed(ActionEvent e) {
sortframe.setVisible(true);
}
}
class QueenFrame_jMenuItem2_actionAdapter implements ActionListener {
private QueenFrame adaptee;
QueenFrame_jMenuItem2_actionAdapter(QueenFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem2_actionPerformed(e);
}
}
class QueenFrame_jMenuItem1_actionAdapter implements ActionListener {
private QueenFrame adaptee;
QueenFrame_jMenuItem1_actionAdapter(QueenFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem1_actionPerformed(e);
}
}
class QueenFrame_jMenuFileExit_ActionAdapter implements ActionListener {
QueenFrame adaptee;
QueenFrame_jMenuFileExit_ActionAdapter(QueenFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent actionEvent) {
adaptee.jMenuFileExit_actionPerformed(actionEvent);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -