📄 digitalbuttonmanager.java
字号:
/*
* @(#)DigitalButtonManager.java 1.0 03/08/22
* Copyright 2003 Entao Zhang, All rights reserved.
*/
import javax.swing.*;
import java.awt.*;
/**
* 数字排序的管理类,使用restorable的拼图的Listener和confuse.
*/
public class DigitalButtonManager extends ComponentsManager{
private JPanel panel;
public JButton[] button;
private int strLen;
public DigitalButtonManager(ImageRevertUnitPane ir){
super(ir);
panel=new JPanel();
setConfuse(new RestorableConfuse());
setEventListener(new RestorableButtonEventListener(ir));
}
public Component buildMainPanel(){
int gridLength=ir.gridLength;
strLen=String.valueOf(gridLength-1).length();
int x=ir.x, y=ir.y;
panel.removeAll();
panel.setBorder(BorderFactory.createTitledBorder("爱你每一天"));
panel.setLayout(new GridBagLayout());
button=new JButton[gridLength];
GridBagConstraints ct = new GridBagConstraints();
Insets insets=new Insets(-1,-1,-1,-1);
Insets insets2=new Insets(3,10,3,10);
ct.insets=insets;
ct.fill=GridBagConstraints.BOTH;
Font f=new Font("Dialog",Font.PLAIN,20);
for (int i=0; i<gridLength; i++){
ct.gridx = i%x;
ct.gridy = i/x;
panel.add((button[i]=new JButton(digitalToString(i))),ct);
button[i].setMargin(insets2);
button[i].setFont(f);
button[i].setBackground(Color.WHITE);
button[i].setFocusable(false);
el.addListener(button[i]);
button[i].setName(String.valueOf(i));
// button[ci].setBorder(null);//再改按钮风格
}
//添加键盘Stroke.
Action[] action=new AbstractAction[4];
String[] key={"LEFT","RIGHT","UP","DOWN"};
for (int i=0; i<action.length; i++){
action[i]=new RestorableKeyAction((ImageRevertUnitPane)ir,key[i]);
panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(key[i]),key[i]);
panel.getActionMap().put(key[i],action[i]);
}
return panel;
}
//格式化数字.(暂时使用.)
private String digitalToString(int i){
String str="000"+String.valueOf(i);
return str.substring(str.length()-strLen);
}
public void componentStateChange(int where){
if (ir.isConfused()){
button[where].setText(digitalToString(ir.grids[where]));
}else{
button[where].setText(digitalToString(where));
}
}
public void swapStateChange(boolean state){
int swap=ir.swap;
if (!state){
button[swap].setText(null);
}
button[swap].setEnabled(state);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -