📄 mainframe.java
字号:
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/*
* 创建日期 2005-7-22
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author 叶少伟 TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class MainFrame extends JFrame
{
private javax.swing.JPanel jContentPane = null;
private JPanel userPanel = null;
private JTable playerTable = null;
private JScrollPane playerScrollPane = null;
private PlayerTableValue playerTableValue = null; // @jve:decl-index=0:
private JPanel messagePanel = null;
private JScrollPane messageScrollPane = null;
private JTextArea messageTextArea = null;
private JTextField messageTextField = null;
private JPanel controlPanel = null;
private JPanel timePanel = null;
private JButton newButton = null;
private JButton joinButton = null;
private JButton exitButton = null;
private GameServer gServer = null;
private GameClient gClient = null;
private Player player = null;
private JButton playerButton = null;
private GamePanel gamePanel = null;
/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getUserPanel()
{
if(userPanel == null)
{
userPanel = new JPanel();
userPanel.setLayout(new BorderLayout());
userPanel.setOpaque(false);
userPanel.setPreferredSize(new java.awt.Dimension(180, 10));
userPanel
.setBorder(javax.swing.BorderFactory
.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
userPanel.add(getPlayerScrollPane(), java.awt.BorderLayout.NORTH);
userPanel.add(getMessagePanel(), java.awt.BorderLayout.CENTER);
userPanel.add(getControlPanel(), java.awt.BorderLayout.SOUTH);
}
return userPanel;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getPlayerTable()
{
if(playerTable == null)
{
playerTable = new JTable();
playerTable.setModel(getPlayerTableValue());
playerTable.setGridColor(new java.awt.Color(100, 169, 238));
playerTable.getTableHeader().setReorderingAllowed(false);
playerTable.getColumnModel().getColumn(0).setPreferredWidth(55);
playerTable.getColumnModel().getColumn(1).setPreferredWidth(45);
playerTable.getColumnModel().getColumn(2).setPreferredWidth(35);
playerTable.getColumnModel().getColumn(3).setPreferredWidth(35);
}
return playerTable;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getPlayerScrollPane()
{
if(playerScrollPane == null)
{
playerScrollPane = new JScrollPane();
playerScrollPane.setViewportView(getPlayerTable());
playerScrollPane.setPreferredSize(new java.awt.Dimension(453, 70));
}
return playerScrollPane;
}
/**
* This method initializes playerTableValue
*
* @return PlayerTableValue
*/
private PlayerTableValue getPlayerTableValue()
{
if(playerTableValue == null)
{
playerTableValue = new PlayerTableValue(playerTable
.getColumnModel());
}
return playerTableValue;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getMessagePanel()
{
if(messagePanel == null)
{
messagePanel = new JPanel();
messagePanel.setLayout(new BorderLayout());
messagePanel.setOpaque(false);
messagePanel.add(getTimePanel(), java.awt.BorderLayout.NORTH);
messagePanel.add(getMessageScrollPane(),
java.awt.BorderLayout.CENTER);
messagePanel
.add(getMessageTextField(), java.awt.BorderLayout.SOUTH);
}
return messagePanel;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getMessageScrollPane()
{
if(messageScrollPane == null)
{
messageScrollPane = new JScrollPane();
messageScrollPane.setViewportView(getMessageTextArea());
}
return messageScrollPane;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getMessageTextArea()
{
if(messageTextArea == null)
{
messageTextArea = new JTextArea();
messageTextArea.setLineWrap(true);
messageTextArea.setEditable(false);
messageTextArea.setForeground(java.awt.Color.red);
}
return messageTextArea;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getMessageTextField()
{
if(messageTextField == null)
{
messageTextField = new JTextField();
messageTextField.setEditable(false);
messageTextField
.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
if(messageTextField.getText().equals(""))
return;
gClient.sendMessage(new Message(Message.STRING,
player.getName() + " 说: "
+ messageTextField.getText()));
messageTextField.setText("");
}
});
}
return messageTextField;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getControlPanel()
{
if(controlPanel == null)
{
controlPanel = new JPanel();
controlPanel.setOpaque(false);
controlPanel.setPreferredSize(new java.awt.Dimension(10, 150));
controlPanel.add(getPlayerButton(), null);
controlPanel.add(getNewButton(), null);
controlPanel.add(getJoinButton(), null);
controlPanel.add(getExitButton(), null);
}
return controlPanel;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getTimePanel()
{
if(timePanel == null)
{
timePanel = new JPanel();
timePanel.setOpaque(false);
timePanel.setPreferredSize(new java.awt.Dimension(10, 130));
}
return timePanel;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getNewButton()
{
if(newButton == null)
{
newButton = new JButton();
newButton.setText("新建游戏");
newButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
if(e.getActionCommand().equals("新建游戏"))
{
if(player == null)
player = new Player(player);
gServer = new GameServer(messageTextField,
playerButton, newButton, joinButton,
MainFrame.this, player.getPort());
gClient = new GameClient(player, messageTextArea,
messageTextField, playerButton, newButton,
joinButton, MainFrame.this, playerTableValue, gamePanel);
newButton.setText("取消游戏");
joinButton.setEnabled(false);
playerButton.setEnabled(false);
messageTextField.setEditable(true);
}
else if(e.getActionCommand().equals("取消游戏"))
{
if(!gServer.canClose())
{
if(JOptionPane.showConfirmDialog(MainFrame.this,
"还有其它玩家连接到你的游戏,是否要强制退出?", "提示",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION)
{
return;
}
}
gServer.colse();
newButton.setText("新建游戏");
joinButton.setEnabled(true);
playerButton.setEnabled(true);
messageTextField.setEditable(false);
}
}
});
}
return newButton;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJoinButton()
{
if(joinButton == null)
{
joinButton = new JButton();
joinButton.setText("加入游戏");
joinButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
if(e.getActionCommand().equals("加入游戏"))
{
if(player == null)
player = new Player(player);
gClient = new GameClient(player, messageTextArea,
messageTextField, playerButton, newButton,
joinButton, MainFrame.this, playerTableValue, gamePanel);
messageTextField.setEditable(true);
newButton.setEnabled(false);
playerButton.setEnabled(false);
joinButton.setText("离开游戏");
}
else if(e.getActionCommand().equals("离开游戏"))
{
if(JOptionPane.showConfirmDialog(MainFrame.this,
"你已加入游戏,是否要强制离开?", "提示",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION)
{
return;
}
gClient.close();
messageTextField.setEditable(false);
newButton.setEnabled(true);
playerButton.setEnabled(true);
joinButton.setText("加入游戏");
}
}
});
}
return joinButton;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getExitButton()
{
if(exitButton == null)
{
exitButton = new JButton();
exitButton.setText("退出游戏");
exitButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
close();
}
});
}
return exitButton;
}
public void close()
{
if(gServer != null && !gServer.isColsed() && !gServer.canClose())
{
if(JOptionPane.showConfirmDialog(this, "还有其它玩家连接到你的游戏,是否要强制退出?",
"提示", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION)
{
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
return;
}
gServer.colse();
}
else if((gServer == null || gServer.isColsed()) && gClient != null
&& !gClient.isClosed())
{
if(JOptionPane.showConfirmDialog(this, "你已加入游戏,是否要强制退出?", "提示",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION)
{
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
return;
}
gClient.close();
}
System.exit(0);
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getPlayerButton()
{
if(playerButton == null)
{
playerButton = new JButton();
playerButton.setText("玩家设置");
playerButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
if(player == null)
player = new Player(player);
new PlayerDialog(MainFrame.this, player);
}
});
}
return playerButton;
}
/**
* This method initializes gamePanel
*
* @return GamePanel
*/
private GamePanel getGamePanel() {
if (gamePanel == null) {
gamePanel = new GamePanel();
gamePanel.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
}
return gamePanel;
}
public static void main(String [] args)
{
new MainFrame();
}
/**
* This is the default constructor
*/
public MainFrame()
{
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize()
{
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
close();
}
});
this.setSize(1024, 745);
this.setContentPane(getJContentPane());
this.setTitle("局域网斗地主游戏");
this.setVisible(true);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private javax.swing.JPanel getJContentPane()
{
if(jContentPane == null)
{
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.setBackground(new java.awt.Color(100, 169, 238));
jContentPane.add(getUserPanel(), java.awt.BorderLayout.EAST);
jContentPane.add(getGamePanel(), java.awt.BorderLayout.CENTER);
}
return jContentPane;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -