parent
2665afb7d1
commit
f8305d713a
@ -0,0 +1,141 @@
|
||||
package cn.edu.caztc.sokobangame;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Font;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import javax.swing.DefaultListModel;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
|
||||
public class GetLevelDialog extends JDialog {
|
||||
private DefaultListModel<String> model;
|
||||
int levelmax, diylevelmax;
|
||||
JList<String> list;
|
||||
boolean xuanzhong;
|
||||
int level = 0;
|
||||
boolean isDualMode;
|
||||
private final JPanel contentPanel = new JPanel();
|
||||
|
||||
public GetLevelDialog(boolean isDualMode) {
|
||||
this.isDualMode = isDualMode;
|
||||
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
|
||||
setModal(true);
|
||||
setTitle(isDualMode ? "双人模式选关" : "单人模式选关");
|
||||
setBounds(100, 100, 512, 340);
|
||||
getContentPane().setLayout(new BorderLayout());
|
||||
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
getContentPane().add(contentPanel, BorderLayout.CENTER);
|
||||
contentPanel.setLayout(null);
|
||||
|
||||
JScrollPane scrollPane = new JScrollPane();
|
||||
scrollPane.setBounds(328, 52, 103, 173);
|
||||
contentPanel.add(scrollPane);
|
||||
|
||||
model = new DefaultListModel<>();
|
||||
diylevelmax = 1;
|
||||
levelmax = 1;
|
||||
String prefix = isDualMode ? MapConfig.DUAL_PREFIX : "";
|
||||
String diyPrefix = isDualMode ? MapConfig.DUAL_PREFIX + "diy" : "diy";
|
||||
|
||||
while (true) {
|
||||
if (new File(MapConfig.PATH + "\\" + diyPrefix + diylevelmax + ".map").exists()) {
|
||||
diylevelmax++;
|
||||
} else if (new File(MapConfig.PATH + "\\" + prefix + levelmax + ".map").exists()) {
|
||||
levelmax++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
list = new JList<>(model);
|
||||
// 默认显示官方地图
|
||||
UpdataModel(levelmax);
|
||||
xuanzhong = false; // 默认不勾选自定义
|
||||
scrollPane.setViewportView(list);
|
||||
|
||||
JCheckBox checkBox = new JCheckBox("自定义");
|
||||
checkBox.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
if (checkBox.isSelected()) {
|
||||
// 勾选时显示DIY地图
|
||||
UpdataModel(diylevelmax);
|
||||
xuanzhong = true;
|
||||
} else {
|
||||
// 取消勾选时显示官方地图
|
||||
UpdataModel(levelmax);
|
||||
xuanzhong = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
// 默认不勾选
|
||||
checkBox.setSelected(false);
|
||||
checkBox.setBounds(328, 23, 103, 23);
|
||||
contentPanel.add(checkBox);
|
||||
|
||||
JTextPane txtpndtxtdiytxt = new JTextPane();
|
||||
txtpndtxtdiytxt.setText(isDualMode ?
|
||||
"双人模式选关界面,选择地图进行双人游戏" :
|
||||
"选关界面,你可以选择开发者做出来的地图,也可以自己在游戏界面------自定义------地图编辑器里自己做地图。");
|
||||
txtpndtxtdiytxt.setFont(new Font("楷体", Font.PLAIN, 15));
|
||||
txtpndtxtdiytxt.setBounds(45, 52, 224, 173);
|
||||
contentPanel.add(txtpndtxtdiytxt);
|
||||
|
||||
{
|
||||
JPanel buttonPane = new JPanel();
|
||||
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
||||
getContentPane().add(buttonPane, BorderLayout.SOUTH);
|
||||
{
|
||||
JButton okButton = new JButton("确定");
|
||||
okButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
level = list.getSelectedIndex() + 1;
|
||||
dispose();
|
||||
}
|
||||
});
|
||||
okButton.setActionCommand("Cancel");
|
||||
buttonPane.add(okButton);
|
||||
getRootPane().setDefaultButton(okButton);
|
||||
}
|
||||
{
|
||||
JButton cancelButton = new JButton("取消");
|
||||
cancelButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
dispose();
|
||||
}
|
||||
});
|
||||
cancelButton.setActionCommand("Cancel");
|
||||
buttonPane.add(cancelButton);
|
||||
}
|
||||
}
|
||||
setLocationRelativeTo(null);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
void UpdataModel(int level) {
|
||||
model.removeAllElements();
|
||||
for (int i = 1; i < level; i++) {
|
||||
model.addElement((isDualMode ? "双人模式" : "") + "第" + i + "关");
|
||||
}
|
||||
}
|
||||
|
||||
int getValue() {
|
||||
return level;
|
||||
}
|
||||
|
||||
boolean isdiy() {
|
||||
return xuanzhong;
|
||||
}
|
||||
|
||||
boolean isDualMode() {
|
||||
return isDualMode;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue