📄 graphicalchargenclient.java
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */package org.apache.mina.example.imagine.step1.client;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JSpinner;import javax.swing.JTextField;import javax.swing.SpinnerNumberModel;import javax.swing.UIManager;import javax.swing.WindowConstants;import org.apache.mina.example.imagine.step1.ImageRequest;import org.apache.mina.example.imagine.step1.server.ImageServer;/** * Swing application that acts as a client of the {@link ImageServer} * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev: 662903 $, $Date: 2008-06-04 00:09:53 +0200 (Wed, 04 Jun 2008) $ */public class GraphicalCharGenClient extends JFrame implements ImageListener { private static final long serialVersionUID = 1L; public static final int PORT = 33789; public static final String HOST = "localhost"; public GraphicalCharGenClient() { initComponents(); jSpinnerHeight.setModel(spinnerHeightModel); jSpinnerWidth.setModel(spinnerWidthModel); jSpinnerChars.setModel(spinnerCharsModel); jTextFieldHost.setText(HOST); jTextFieldPort.setText(String.valueOf(PORT)); setTitle(""); } private void jButtonConnectActionPerformed() { try { setTitle("connecting..."); String host = jTextFieldHost.getText(); int port = Integer.valueOf(jTextFieldPort.getText()); if (imageClient != null) { imageClient.disconnect(); } imageClient = new ImageClient(host, port, this); imageClient.connect(); jButtonConnect.setEnabled(!imageClient.isConnected()); } catch (NumberFormatException e) { onException(e); } catch (IllegalArgumentException e) { onException(e); } } private void jButtonDisconnectActionPerformed() { setTitle("disconnecting"); imageClient.disconnect(); } private void jButtonSendRequestActionPerformed() { sendRequest(); } private void sendRequest() { int chars = spinnerCharsModel.getNumber().intValue(); int height = spinnerHeightModel.getNumber().intValue(); int width = spinnerWidthModel.getNumber().intValue(); imageClient.sendRequest(new ImageRequest(width, height, chars)); } public void onImages(BufferedImage image1, BufferedImage image2) { if (checkBoxContinuous.isSelected()) { // already request next image sendRequest(); } imagePanel1.setImages(image1, image2); } public void onException(Throwable throwable) { Throwable cause = throwable; while (cause.getCause() != null) { cause = cause.getCause(); } JOptionPane.showMessageDialog( this, cause.getMessage(), throwable.getMessage(), JOptionPane.ERROR_MESSAGE); setTitle(""); jButtonConnect.setEnabled(!imageClient.isConnected()); jButtonDisconnect.setEnabled(imageClient.isConnected()); } public void sessionOpened() { jButtonDisconnect.setEnabled(true); jButtonSendRequest.setEnabled(true); jButtonConnect.setEnabled(false); setTitle("connected"); } public void sessionClosed() { jButtonDisconnect.setEnabled(false); jButtonSendRequest.setEnabled(false); jButtonConnect.setEnabled(true); setTitle("not connected"); } @Override public void setTitle(String title) { super.setTitle("MINA - Chargen client - " + title); } private void initComponents() { JLabel jLabel1 = new JLabel(); jTextFieldHost = new JTextField(); jButtonConnect = new JButton(); JLabel jLabel3 = new JLabel(); jSpinnerWidth = new JSpinner(); JLabel label5 = new JLabel(); jSpinnerChars = new JSpinner(); checkBoxContinuous = new JCheckBox(); JLabel jLabel2 = new JLabel(); jTextFieldPort = new JTextField(); jButtonDisconnect = new JButton(); JLabel jLabel4 = new JLabel(); jSpinnerHeight = new JSpinner(); jButtonSendRequest = new JButton(); imagePanel1 = new ImagePanel(); //======== this ======== setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setMinimumSize(new Dimension(700, 300)); setPreferredSize(new Dimension(740, 600)); Container contentPane = getContentPane(); contentPane.setLayout(new GridBagLayout()); ((GridBagLayout) contentPane.getLayout()).columnWidths = new int[]{36, 167, 99, 41, 66, 75, 57, 96, 0, 0}; ((GridBagLayout) contentPane.getLayout()).rowHeights = new int[]{10, 31, 31, 256, 0}; ((GridBagLayout) contentPane.getLayout()).columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0E-4}; ((GridBagLayout) contentPane.getLayout()).rowWeights = new double[]{0.0, 0.0, 0.0, 1.0, 1.0E-4}; //---- jLabel1 ---- jLabel1.setText("Host"); contentPane.add(jLabel1, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0)); contentPane.add(jTextFieldHost, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- jButtonConnect ---- jButtonConnect.setText("Connect"); jButtonConnect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButtonConnectActionPerformed(); } }); contentPane.add(jButtonConnect, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- jLabel3 ---- jLabel3.setText("Width"); contentPane.add(jLabel3, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); contentPane.add(jSpinnerWidth, new GridBagConstraints(4, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- label5 ---- label5.setText("characters"); contentPane.add(label5, new GridBagConstraints(5, 1, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.VERTICAL, new Insets(0, 0, 5, 5), 0, 0)); contentPane.add(jSpinnerChars, new GridBagConstraints(6, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 10), 0, 0)); //---- checkBoxContinuous ---- checkBoxContinuous.setText("continuous"); contentPane.add(checkBoxContinuous, new GridBagConstraints(7, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- jLabel2 ---- jLabel2.setText("Port"); contentPane.add(jLabel2, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0)); contentPane.add(jTextFieldPort, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- jButtonDisconnect ---- jButtonDisconnect.setText("Disconnect"); jButtonDisconnect.setEnabled(false); jButtonDisconnect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButtonDisconnectActionPerformed(); } }); contentPane.add(jButtonDisconnect, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- jLabel4 ---- jLabel4.setText("Height"); contentPane.add(jLabel4, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); contentPane.add(jSpinnerHeight, new GridBagConstraints(4, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //---- jButtonSendRequest ---- jButtonSendRequest.setText("Send Request"); jButtonSendRequest.setEnabled(false); jButtonSendRequest.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButtonSendRequestActionPerformed(); } }); contentPane.add(jButtonSendRequest, new GridBagConstraints(5, 2, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 5, 10), 0, 0)); //======== imagePanel1 ======== { imagePanel1.setBackground(new Color(51, 153, 255)); imagePanel1.setPreferredSize(new Dimension(500, 500)); { // compute preferred size Dimension preferredSize = new Dimension(); for (int i = 0; i < imagePanel1.getComponentCount(); i++) { Rectangle bounds = imagePanel1.getComponent(i).getBounds(); preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width); preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height); } Insets insets = imagePanel1.getInsets(); preferredSize.width += insets.right; preferredSize.height += insets.bottom; imagePanel1.setMinimumSize(preferredSize); imagePanel1.setPreferredSize(preferredSize); } } contentPane.add(imagePanel1, new GridBagConstraints(0, 3, 9, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(8, 5, 8, 5), 0, 0)); pack(); setLocationRelativeTo(getOwner()); } /** * @param args the command line arguments */ public static void main(String args[]) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { // ignore } java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new GraphicalCharGenClient().setVisible(true); } }); } private JTextField jTextFieldHost; private JButton jButtonConnect; private JSpinner jSpinnerWidth; private JSpinner jSpinnerChars; private JCheckBox checkBoxContinuous; private JTextField jTextFieldPort; private JButton jButtonDisconnect; private JSpinner jSpinnerHeight; private JButton jButtonSendRequest; private ImagePanel imagePanel1; private SpinnerNumberModel spinnerHeightModel = new SpinnerNumberModel(100, 50, 600, 25); private SpinnerNumberModel spinnerWidthModel = new SpinnerNumberModel(200, 50, 1000, 25); private SpinnerNumberModel spinnerCharsModel = new SpinnerNumberModel(10, 1, 60, 1); private ImageClient imageClient = new ImageClient(HOST, PORT, this);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -