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

📄 digitalbuttonmanager.java

📁 Java版拼图游戏
💻 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 + -