parent
f8305d713a
commit
a171dbf196
@ -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