📄 mypanel.java
字号:
package main;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
import main.algorithm.*;
public class myPanel extends JPanel implements Observer{
Gracie temp;
JLabel result=new JLabel("结果",JLabel.CENTER);
Container parent;
Data data;
int width,height;
String name,command;
public myPanel(String[] str,Observable data,Observer resultO,JPanel parent) {
width=150;
height=280;
this.name=str[0];
this.command="main.algorithm."+str[1];
data.addObserver(this);
this.data=(Data)data;
this.parent=parent;
try{
setBackground(Color.white);
setBorder(new TitledBorder(name));
temp=(Gracie)(Class.forName(command).newInstance());
temp.init(this.data.getArray());
temp.setParent(this);
temp.addObserver(resultO);
setLayout(new BorderLayout());
result.setBorder(new LineBorder(Color.black));
add(((JPanel)temp),BorderLayout.CENTER);
add(result,BorderLayout.SOUTH);
validate();
}
catch(Exception e){e.printStackTrace();}
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
if(e.getClickCount()==2){
if(!temp.getState()){
temp.init(myPanel.this.data.getArray());
temp.setState(true);
}
else{
temp.setState(false);
}
}
}});
}
public void update(Observable data,Object arg){
temp.init(this.data.getArray());
validate();
}
public void start(){
temp.init(data.getArray());
temp.setState(true);
}
public void stop(){
temp.setState(false);
}
public Dimension getPreferredSize(){
return new Dimension(width,height);
}
public Dimension getMinimumSize(){
return new Dimension(150,height);
}
public Dimension getMaximumSize(){
return new Dimension(150,height);
}
public boolean equals(Object o){
return name.equals(((myPanel)o).name);
}
public void finalize(int a){
data.deleteObserver(this);
if(a!=-1){
parent.remove(a);
parent.validate();
parent.repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -