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

📄 scenariodialog.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
字号:
package megamek.client.ui.swing;import megamek.client.ui.swing.util.PlayerColors;import megamek.common.Player;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemListener;/** * Allow a user to set types and colors for scenario players */public class ScenarioDialog extends JDialog implements ActionListener {    private static final int T_ME = 0;    public static final int T_BOT = 2;    private Player[] m_players;    private JLabel[] m_labels;    private JComboBox[] m_typeChoices;    private JButton[] m_camoButtons;    private JFrame m_frame;    /**     * The camo selection dialog.     */    private CamoChoiceDialog camoDialog;    private ItemListener prevListener;    public boolean bSet;    public int[] playerTypes;    public String localName = ""; //$NON-NLS-1$    public ScenarioDialog(JFrame frame, Player[] pa) {        super(frame, Messages.getString("MegaMek.ScenarioDialog.title"), true); //$NON-NLS-1$        m_frame = frame;        camoDialog = new CamoChoiceDialog(frame);        m_players = pa;        m_labels = new JLabel[pa.length];        m_typeChoices = new JComboBox[pa.length];        m_camoButtons = new JButton[pa.length];        playerTypes = new int[pa.length];        for (int x = 0; x < pa.length; x++) {            final Player curPlayer = m_players[x];            curPlayer.setColorIndex(x);            m_labels[x] = new JLabel(pa[x].getName(), JLabel.LEFT);            m_typeChoices[x] = new JComboBox();            m_typeChoices[x].addItem(Messages.getString("MegaMek.ScenarioDialog.me")); //$NON-NLS-1$            m_typeChoices[x].addItem(Messages.getString("MegaMek.ScenarioDialog.otherh")); //$NON-NLS-1$            m_typeChoices[x].addItem(Messages.getString("MegaMek.ScenarioDialog.bot")); //$NON-NLS-1$            final Color defaultBackground = m_typeChoices[x].getBackground();            m_camoButtons[x] = new JButton();            final JButton curButton = m_camoButtons[x];            curButton.setText(Messages.getString("MegaMek.NoCamoBtn")); //$NON-NLS-1$            curButton.setPreferredSize(new Dimension(84, 72));            curButton.setBackground(PlayerColors.getColor(x));            curButton.setActionCommand("camo"); //$NON-NLS-1$            // When a camo button is pressed, remove any previous            // listener from the dialog, update the dialog for the            // button's player, and add a new listener.            curButton.addActionListener(new ActionListener() {                private final CamoChoiceDialog dialog = camoDialog;                private final JButton button = curButton;                private final Color background = defaultBackground;                private final Player player = curPlayer;                public void actionPerformed(ActionEvent e) {                    if (prevListener != null) {                        dialog.removeItemListener(prevListener);                    }                    if (player.getCamoFileName() == null) {                        dialog.setCategory(Player.NO_CAMO);                        dialog.setItemName(Player.colorNames[player.getColorIndex()]);                    } else {                        dialog.setCategory(player.getCamoCategory());                        dialog.setItemName(player.getCamoFileName());                    }                    prevListener = new CamoChoiceListener(dialog, button, background, player);                    dialog.addItemListener(prevListener);                    dialog.setVisible(true);                }            });        }        getContentPane().setLayout(new BorderLayout());        JPanel choicePanel = new JPanel();        choicePanel.setLayout(new GridLayout(pa.length + 1, 0));        choicePanel.add(new JLabel(Messages.getString("MegaMek.ScenarioDialog.pNameType"))); //$NON-NLS-1$        choicePanel.add(new JLabel(Messages.getString("MegaMek.ScenarioDialog.Camo"))); //$NON-NLS-1$        for (int x = 0; x < pa.length; x++) {            JPanel typePanel = new JPanel();            typePanel.setLayout(new GridLayout(0, 1));            typePanel.add(m_labels[x]);            typePanel.add(m_typeChoices[x]);            choicePanel.add(typePanel);            choicePanel.add(m_camoButtons[x]);        }        getContentPane().add(choicePanel, BorderLayout.CENTER);        JPanel butPanel = new JPanel();        butPanel.setLayout(new FlowLayout(FlowLayout.CENTER));        JButton bOkay = new JButton(Messages.getString("Okay")); //$NON-NLS-1$        bOkay.setActionCommand("okay"); //$NON-NLS-1$        bOkay.addActionListener(this);        JButton bCancel = new JButton(Messages.getString("Cancel")); //$NON-NLS-1$        bCancel.setActionCommand("cancel"); //$NON-NLS-1$        bCancel.addActionListener(this);        butPanel.add(bOkay);        butPanel.add(bCancel);        getContentPane().add(butPanel, BorderLayout.SOUTH);        pack();        setResizable(false);        setLocation(frame.getLocation().x + frame.getSize().width / 2 - getSize().width / 2,                frame.getLocation().y + frame.getSize().height / 2 - getSize().height / 2);    }    public void actionPerformed(ActionEvent e) {        if ("okay".equals(e.getActionCommand())) { //$NON-NLS-1$            boolean bMeSet = false;            for (int x = 0; x < m_players.length; x++) {                playerTypes[x] = m_typeChoices[x].getSelectedIndex();                if (playerTypes[x] == T_ME) {                    if (bMeSet) {                        JOptionPane.showMessageDialog(m_frame, Messages.getString("MegaMek.ScenarioErrorAllert.message"), Messages.getString("MegaMek.ScenarioErrorAllert.title"), JOptionPane.ERROR_MESSAGE);                        return;                    }                    bMeSet = true;                    localName = m_players[x].getName();                }            }            bSet = true;            setVisible(false);        } else if ("cancel".equals(e.getActionCommand())) { //$NON-NLS-1$            setVisible(false);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -