java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.java
author František Kučera <franta-hg@frantovo.cz>
Mon, 14 Mar 2011 21:54:03 +0100
changeset 15 b166c6f49719
child 16 131d2652b241
permissions -rw-r--r--
První návrh
franta-hg@15
     1
package cz.frantovo.obrazkovyApplet;
franta-hg@15
     2
franta-hg@15
     3
import java.awt.Color;
franta-hg@15
     4
import java.awt.Graphics;
franta-hg@15
     5
import java.awt.Graphics2D;
franta-hg@15
     6
import java.awt.event.MouseEvent;
franta-hg@15
     7
import java.awt.event.MouseListener;
franta-hg@15
     8
import java.awt.event.MouseMotionListener;
franta-hg@15
     9
import java.awt.image.BufferedImage;
franta-hg@15
    10
import java.io.BufferedReader;
franta-hg@15
    11
import java.io.InputStreamReader;
franta-hg@15
    12
import java.io.OutputStream;
franta-hg@15
    13
import java.net.URL;
franta-hg@15
    14
import java.net.URLConnection;
franta-hg@15
    15
import java.util.logging.Level;
franta-hg@15
    16
import java.util.logging.Logger;
franta-hg@15
    17
import javax.imageio.ImageIO;
franta-hg@15
    18
import javax.swing.UIManager;
franta-hg@15
    19
import javax.swing.UIManager.LookAndFeelInfo;
franta-hg@15
    20
franta-hg@15
    21
public class ObrazkovyApplet extends javax.swing.JApplet implements MouseMotionListener, MouseListener {
franta-hg@15
    22
franta-hg@15
    23
	private static final Logger log = Logger.getLogger(ObrazkovyApplet.class.getSimpleName());
franta-hg@15
    24
	private static final String CILOVE_URL = "http://vm.frantovo.cz/temp/applet/";
franta-hg@15
    25
	private int stareX;
franta-hg@15
    26
	private int stareY;
franta-hg@15
    27
	private boolean kresli;
franta-hg@15
    28
	private Graphics g;
franta-hg@15
    29
	private Graphics2D vystupniGrafika;
franta-hg@15
    30
	private BufferedImage obrazek;
franta-hg@15
    31
franta-hg@15
    32
	private void odesliData() {
franta-hg@15
    33
		try {
franta-hg@15
    34
			URL url = new URL(CILOVE_URL);
franta-hg@15
    35
			URLConnection spojeni = url.openConnection();
franta-hg@15
    36
			spojeni.setDoOutput(true);
franta-hg@15
    37
			spojeni.connect();
franta-hg@15
    38
			OutputStream os = spojeni.getOutputStream();
franta-hg@15
    39
			ImageIO.write(obrazek, "png", os);
franta-hg@15
    40
			os.flush();
franta-hg@15
    41
			os.close();
franta-hg@15
    42
franta-hg@15
    43
			BufferedReader r = new BufferedReader(new InputStreamReader(spojeni.getInputStream()));
franta-hg@15
    44
			vypisStav(r.readLine());
franta-hg@15
    45
			r.close();
franta-hg@15
    46
franta-hg@15
    47
			smazGrafiku();
franta-hg@15
    48
		} catch (Exception e) {
franta-hg@15
    49
			vypisStav("odeslání selhalo: " + e.getMessage());
franta-hg@15
    50
			log.log(Level.SEVERE, "Nepodařilo se odeslat data", e);
franta-hg@15
    51
		}
franta-hg@15
    52
	}
franta-hg@15
    53
franta-hg@15
    54
	private void smazGrafiku() {
franta-hg@15
    55
		getVystupniGrafika().clearRect(0, 0, platno.getWidth(), platno.getHeight());
franta-hg@15
    56
		g.clearRect(0, 0, platno.getWidth(), platno.getHeight());
franta-hg@15
    57
	}
franta-hg@15
    58
franta-hg@15
    59
	public void mouseDragged(MouseEvent e) {
franta-hg@15
    60
		int x = e.getX();
franta-hg@15
    61
		int y = e.getY();
franta-hg@15
    62
franta-hg@15
    63
		if (kresli) {
franta-hg@15
    64
			vypisStav("kreslím: " + stareX + "x" + stareY + "→" + x + "x" + y);
franta-hg@15
    65
			g = platno.getGraphics();
franta-hg@15
    66
			g.setColor(Color.BLUE);
franta-hg@15
    67
			g.drawLine(stareX, stareY, x, y);
franta-hg@15
    68
franta-hg@15
    69
			platno.pa
franta-hg@15
    70
franta-hg@15
    71
			
franta-hg@15
    72
			getVystupniGrafika().drawLine(stareX, stareY, x, y);
franta-hg@15
    73
		}
franta-hg@15
    74
franta-hg@15
    75
		stareX = x;
franta-hg@15
    76
		stareY = y;
franta-hg@15
    77
	}
franta-hg@15
    78
franta-hg@15
    79
	public void mousePressed(MouseEvent e) {
franta-hg@15
    80
		stareX = e.getX();
franta-hg@15
    81
		stareY = e.getY();
franta-hg@15
    82
		kresli = true;
franta-hg@15
    83
	}
franta-hg@15
    84
franta-hg@15
    85
	public void mouseReleased(MouseEvent e) {
franta-hg@15
    86
		kresli = false;
franta-hg@15
    87
	}
franta-hg@15
    88
franta-hg@15
    89
	public void mouseMoved(MouseEvent e) {
franta-hg@15
    90
	}
franta-hg@15
    91
franta-hg@15
    92
	public void mouseClicked(MouseEvent e) {
franta-hg@15
    93
	}
franta-hg@15
    94
franta-hg@15
    95
	public void mouseEntered(MouseEvent e) {
franta-hg@15
    96
	}
franta-hg@15
    97
franta-hg@15
    98
	public void mouseExited(MouseEvent e) {
franta-hg@15
    99
		kresli = false;
franta-hg@15
   100
	}
franta-hg@15
   101
franta-hg@15
   102
	private Graphics2D getVystupniGrafika() {
franta-hg@15
   103
		if (obrazek == null) {
franta-hg@15
   104
			obrazek = new BufferedImage(platno.getWidth(), platno.getHeight(), BufferedImage.TYPE_INT_RGB);
franta-hg@15
   105
		}
franta-hg@15
   106
		if (vystupniGrafika == null) {
franta-hg@15
   107
			vystupniGrafika = obrazek.createGraphics();
franta-hg@15
   108
			vystupniGrafika.setBackground(Color.WHITE);
franta-hg@15
   109
			vystupniGrafika.setColor(Color.BLUE);
franta-hg@15
   110
			vystupniGrafika.clearRect(0, 0, platno.getWidth(), platno.getHeight());
franta-hg@15
   111
		}
franta-hg@15
   112
		return vystupniGrafika;
franta-hg@15
   113
	}
franta-hg@15
   114
franta-hg@15
   115
	@Override
franta-hg@15
   116
	public void init() {
franta-hg@15
   117
franta-hg@15
   118
		/** Lepší vzhled – LaF */
franta-hg@15
   119
		try {
franta-hg@15
   120
			for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
franta-hg@15
   121
				if ("Nimbus".equals(info.getName())) {
franta-hg@15
   122
					UIManager.setLookAndFeel(info.getClassName());
franta-hg@15
   123
					break;
franta-hg@15
   124
				}
franta-hg@15
   125
			}
franta-hg@15
   126
		} catch (Exception e) {
franta-hg@15
   127
		}
franta-hg@15
   128
franta-hg@15
   129
		/** Spuštění appletu */
franta-hg@15
   130
		try {
franta-hg@15
   131
			java.awt.EventQueue.invokeAndWait(new Runnable() {
franta-hg@15
   132
franta-hg@15
   133
				public void run() {
franta-hg@15
   134
					initComponents();
franta-hg@15
   135
				}
franta-hg@15
   136
			});
franta-hg@15
   137
		} catch (Exception e) {
franta-hg@15
   138
			log.log(Level.SEVERE, "Chyba appletu:", e);
franta-hg@15
   139
		}
franta-hg@15
   140
franta-hg@15
   141
		/** Nastavení plátna */
franta-hg@15
   142
		platno.addMouseMotionListener(ObrazkovyApplet.this);
franta-hg@15
   143
		platno.addMouseListener(ObrazkovyApplet.this);
franta-hg@15
   144
		log.log(Level.INFO, "plátno nastaveno");
franta-hg@15
   145
	}
franta-hg@15
   146
franta-hg@15
   147
	@SuppressWarnings("unchecked")
franta-hg@15
   148
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
franta-hg@15
   149
    private void initComponents() {
franta-hg@15
   150
franta-hg@15
   151
        odeslat = new javax.swing.JButton();
franta-hg@15
   152
        stavovyRadek = new javax.swing.JLabel();
franta-hg@15
   153
        platno = new javax.swing.JPanel();
franta-hg@15
   154
franta-hg@15
   155
        odeslat.setText("Odeslat na server");
franta-hg@15
   156
        odeslat.addActionListener(new java.awt.event.ActionListener() {
franta-hg@15
   157
            public void actionPerformed(java.awt.event.ActionEvent evt) {
franta-hg@15
   158
                odeslatActionPerformed(evt);
franta-hg@15
   159
            }
franta-hg@15
   160
        });
franta-hg@15
   161
franta-hg@15
   162
        stavovyRadek.setText(" ");
franta-hg@15
   163
franta-hg@15
   164
        platno.setDoubleBuffered(true);
franta-hg@15
   165
franta-hg@15
   166
        javax.swing.GroupLayout platnoLayout = new javax.swing.GroupLayout(platno);
franta-hg@15
   167
        platno.setLayout(platnoLayout);
franta-hg@15
   168
        platnoLayout.setHorizontalGroup(
franta-hg@15
   169
            platnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
franta-hg@15
   170
            .addGap(0, 388, Short.MAX_VALUE)
franta-hg@15
   171
        );
franta-hg@15
   172
        platnoLayout.setVerticalGroup(
franta-hg@15
   173
            platnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
franta-hg@15
   174
            .addGap(0, 255, Short.MAX_VALUE)
franta-hg@15
   175
        );
franta-hg@15
   176
franta-hg@15
   177
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
franta-hg@15
   178
        getContentPane().setLayout(layout);
franta-hg@15
   179
        layout.setHorizontalGroup(
franta-hg@15
   180
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
franta-hg@15
   181
            .addGroup(layout.createSequentialGroup()
franta-hg@15
   182
                .addContainerGap()
franta-hg@15
   183
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
franta-hg@15
   184
                    .addComponent(platno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
franta-hg@15
   185
                    .addGroup(layout.createSequentialGroup()
franta-hg@15
   186
                        .addComponent(stavovyRadek, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)
franta-hg@15
   187
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
franta-hg@15
   188
                        .addComponent(odeslat)))
franta-hg@15
   189
                .addContainerGap())
franta-hg@15
   190
        );
franta-hg@15
   191
        layout.setVerticalGroup(
franta-hg@15
   192
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
franta-hg@15
   193
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
franta-hg@15
   194
                .addContainerGap()
franta-hg@15
   195
                .addComponent(platno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
franta-hg@15
   196
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
franta-hg@15
   197
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
franta-hg@15
   198
                    .addComponent(odeslat)
franta-hg@15
   199
                    .addComponent(stavovyRadek))
franta-hg@15
   200
                .addContainerGap())
franta-hg@15
   201
        );
franta-hg@15
   202
    }// </editor-fold>//GEN-END:initComponents
franta-hg@15
   203
franta-hg@15
   204
	private void odeslatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odeslatActionPerformed
franta-hg@15
   205
		odesliData();
franta-hg@15
   206
	}//GEN-LAST:event_odeslatActionPerformed
franta-hg@15
   207
franta-hg@15
   208
	private void vypisStav(String text) {
franta-hg@15
   209
		stavovyRadek.setText(text);
franta-hg@15
   210
	}
franta-hg@15
   211
    // Variables declaration - do not modify//GEN-BEGIN:variables
franta-hg@15
   212
    private javax.swing.JButton odeslat;
franta-hg@15
   213
    private javax.swing.JPanel platno;
franta-hg@15
   214
    private javax.swing.JLabel stavovyRadek;
franta-hg@15
   215
    // End of variables declaration//GEN-END:variables
franta-hg@15
   216
}