ADD file via upload

main
p6xlcrq3f 4 months ago
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…
Cancel
Save