Java tutorial
/** * You should have received a copy of the GNU General Public License version 3 * along with this work; Please find the Copyright information and Terms and * Conditions in the ClientLauncher.java or ServerLauncher.java file. */ package ca.live.hk12.crescent.client.view; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import ca.live.hk12.crescent.client.model.GameModel; import com.jgoodies.forms.factories.FormFactory; import com.jgoodies.forms.layout.ColumnSpec; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; public class ConnectionFrame extends JFrame { private static final long serialVersionUID = -6263136233957731229L; private JPanel contentPane; private JTextField textField; private final Action connect = new SwingAction(); private GameModel model; public ConnectionFrame(GameModel model) { this.model = model; setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new FormLayout( new ColumnSpec[] { FormFactory.RELATED_GAP_COLSPEC, ColumnSpec.decode("default:grow"), }, new RowSpec[] { FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, })); JLabel lblConnectToServer = new JLabel("Connect to Server"); contentPane.add(lblConnectToServer, "2, 2"); JLabel lblServerIp = new JLabel("Server IP"); contentPane.add(lblServerIp, "2, 6"); textField = new JTextField("localhost"); contentPane.add(textField, "2, 8, fill, default"); textField.setColumns(10); JButton btnConnect = new JButton("Connect"); btnConnect.setAction(connect); contentPane.add(btnConnect, "2, 10"); btnConnect.setFocusable(false); JLabel lblStatus = new JLabel("Status: No Connection."); contentPane.add(lblStatus, "2, 20"); } private class SwingAction extends AbstractAction { private static final long serialVersionUID = 8398910436762078990L; public SwingAction() { putValue(NAME, "Connect"); putValue(SHORT_DESCRIPTION, "Connect to server."); } public void actionPerformed(ActionEvent e) { connect(textField.getText()); } } private void connect(String ip) { model.getConnection().connect(ip); } }