📄 board.java
字号:
}
});
openMenuItem.setEnabled( true);
saveMenuItem.setEnabled( false);
optionsMenuItem.setEnabled( false);
setJMenuBar(menuBar);
setCompsText();
// CONSTS.log("End initComponents()!");
}
private void setCompsText()
{
jButton1.setToolTipText(Trans.get().tag("start_new_game"));
jButton1.setText(Trans.get().tag("start"));
jButton2.setText(Trans.get().tag("stop"));
jButton2.setToolTipText( Trans.get().tag("cancel_current_game"));
diffSlider.setToolTipText( Trans.get().tag("difficulty_level"));
fileMenu.setText( Trans.get().tag("file"));
newMenuItem.setText( Trans.get().tag("new_game"));
openMenuItem.setText( Trans.get().tag("open"));
saveMenuItem.setText( Trans.get().tag("save"));
exitMenuItem.setText( Trans.get().tag("exit"));
optionsMenu.setText( Trans.get().tag("options"));
optionsMenuItem.setText( Trans.get().tag("options"));
langMenu.setText( Trans.get().tag("language"));
helpMenu.setText( Trans.get().tag("help"));
contentsMenuItem.setText( Trans.get().tag("contents"));
aboutMenuItem.setText( Trans.get().tag("about"));
}
private void initPanel(JPanel panel)
{
panel.setLayout(new GridLayout(3, 3, 1, 1));
panel.setBorder(new EtchedBorder());
panel.setPreferredSize(new Dimension(93, 93));
panel.setRequestFocusEnabled(false);
panel.setBackground( CONSTS.BLUE_MED);
}
private void exitMenuItemActionPerformed(ActionEvent evt)
{
System.exit(0);
}
public void setPosValue( int i, int j, int val)
{
cPos[i][j].setValue( val);
}
private void setPos( int[][] pos, boolean[][] pInitPos)
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
cPos[i][j].setNormalText();
cPos[i][j].setBackground( CONSTS.BLUE_CLEAR);
if( pInitPos[i][j])
{
cPos[i][j].initPos = true;
cPos[i][j].setText( String.valueOf( pos[i][j]));
cPos[i][j].setForeground( Color.BLACK);
}
else
{
cPos[i][j].initPos = false;
if( pos[i][j] != 0)
cPos[i][j].setText( String.valueOf( pos[i][j]));
else
cPos[i][j].setText("");
cPos[i][j].setForeground( Color.BLUE);
}
}
}
}
public void initPartida(int[][] pos, boolean[][] pInitPos)
{
setMessage("");
setPos( pos, pInitPos);
jButton2.setEnabled( true);
jButton1.setEnabled( false);
newMenuItem.setEnabled( false);
openMenuItem.setEnabled(false);
saveMenuItem.setEnabled(true);
disabled = false;
diffSlider.setEnabled( false);
optionsMenuItem.setEnabled( false);
}
public void setParent(FreeSudoku parent)
{
cParent = parent;
}
public void setMessage( String pMessage)
{
cTextFieldMessages.setText( pMessage);
}
public int getNivel()
{
return diffSlider.getValue();
}
public void disableAll()
{
cTextFieldMessages.setText("");
jButton1.setEnabled( true);
jButton2.setEnabled( false);
newMenuItem.setEnabled( true);
openMenuItem.setEnabled(true);
saveMenuItem.setEnabled(false);
disabled = true;
setPosBackgroundColor( CONSTS.GRAY_CLEAR);
diffSlider.setEnabled( true);
setMessage( Trans.get().tag("click_start"));
// optionsMenuItem.setEnabled( true);
}
private void setPosBackgroundColor(Color pColor)
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
cPos[i][j].setBackground( pColor);
}
}
}
/**
* @return
*/
public boolean isSymmetric()
{
if( optionsDialog == null)
optionsDialog = new OptionsDialog();
return optionsDialog.isSymmetric();
}
protected String getPosSmall( int i, int j)
{
return cPos[i][j].getPosSmall();
}
/**
* set the red check back to yellow
*
*/
public void backConsistence()
{
for(int i = 0;i <9;i++)
for(int j=0;j<9;j++)
{
if(cPos[i][j].getBackground().equals(CONSTS.RED_CLEAR)){
cPos[i][j].setBackground(Color.YELLOW);
}
}
cTextFieldMessages.setText("");
}
/**
* Check if everything is still ok in the area of influence of one cell, only multivalue cell.
*/
public void checkConsistence( int i, int j)
{
if( cPos[i][j].isSmall)
throw new RuntimeException("ERROR: checkConsistence. Shouldn't be small");
String valInCell = cPos[i][j].getText();
if( valInCell.equals("")) return;
backConsistence();
for(int x = 0; x < 9; x++)
{
if( cPos[i][x].isSmall && cPos[i][x].getText().indexOf( valInCell) != -1)
setAlertInCell( i, x);
if( cPos[x][j].isSmall && cPos[x][j].getText().indexOf( valInCell) != -1)
setAlertInCell( x, j);
}
for(int x = i - i%3; x < i - i%3 + 3; x++)
{
for(int y = j - j%3; y < j - j%3 + 3; y++)
{
if( cPos[x][y].isSmall && cPos[x][y].getText().indexOf( valInCell) != -1)
setAlertInCell( x, y);
}
}
}
private void setAlertInCell( int i, int j)
{
cPos[i][j].setBackground( CONSTS.RED_CLEAR);
setMessage( "One optional value in cell is not consistent!");
}
/**
*
*/
public void showAllPosibleVals()
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
if( cPos[i][j].getText().length() == 0)
{
cPos[i][j].isSmall = true;
cPos[i][j].setSmallText();
cPos[i][j].setText( cParent.getPosibleVals( i, j, false));
if( cPos[i][j].getText().length() > 4) // switch double line
cPos[i][j].setMargin( Cell.smallCellDoubleLineMargin);
cPos[i][j].getCaret().setVisible(false);
}
}
}
}
/**
* Load game function
*
*/
public void loadGame() {
FileDialog d = new FileDialog(this, "载入进度", FileDialog.LOAD);
d.setFile("*.sav");
d.setDirectory("./save");
d.show();
String saveFile = null;
if ( d.getFile() != null) {
String getfile = d.getFile();
String getDire = d.getDirectory();
saveFile = getDire + getfile;
BufferedReader reader = null;
try {
ArrayList array= new ArrayList();
reader = new BufferedReader(new FileReader(new File(
saveFile)));
String s= null;
while((s = reader.readLine())!=null){
array.add(s);
}
cParent.loadFromFile(array);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
/**
* Save game function
*/
private void saveGame() {
FileDialog d = new FileDialog(this, "保存进度", FileDialog.SAVE);
d.setFile("*.sav");
//d.setDirectory(".\\save");
d.show();
String saveFile = null;
if ( d.getFile() != null) {
saveFile = d.getDirectory() + d.getFile();
ArrayList arrayList = cParent.statusToFile();
File file = new File(saveFile);
BufferedWriter buffer = null;
try {
FileWriter writer = new FileWriter(file);
buffer = new BufferedWriter(writer);
for (int i = 0; i < arrayList.size(); i++) {
buffer.write((String) arrayList.get(i));
buffer.write("\n");
}
buffer.flush();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
buffer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else {
// do nothing
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -