- Products
- ZShogi
- PyZume
- Download
- Let's try
- MakeGame
- MakePuzzle
- Links
-
www.zope.org/Members/owa
-
www.coreblog.org
-
www.python.org
-
www.zope.org
|
This is a simple applet with javax.swing class.
Source
//
// SwingApplet.java:
//
//<applet height=280 width=206 code="SwingApplet.class"
// archive="SwingApplet.jar" alt="applet is disable">
// <param name="location" value="http://owa.as.wakwak.ne.jp/owa/arch/games/">
// <param name="gameid" value="R14_5">
// <param name="seqmax" value="109">
// applet is disable
//</applet>
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import javax.swing.table.*;
import java.io.*;
public class SwingApplet extends JApplet implements ActionListener {
SwingViewPanel panel_view;
JPanel panel_cntl;
JButton btn_head;
JButton btn_prev;
JButton btn_next;
JButton btn_tail;
Color background = new Color(240, 240, 250);
public void init(){
String location = getParameter("location");
String gameid = getParameter("gameid");
JLabel title = new JLabel("ZShogi Applet Ver.0.1.4");
JPanel panel_head = new JPanel();
panel_head.add(title);
panel_head.setFont(new Font("Serif", Font.BOLD, 20));
panel_head.setBackground(new Color(200, 200, 140));
panel_head.setForeground(Color.white);
panel_view = new SwingViewPanel(location, gameid, this);
//panel_view.setOpaque(false);
panel_view.setBackground(background);
panel_view.setFont(new Font("Mono", Font.PLAIN, 10));
btn_head = create_button("ar_head.png", "head", KeyEvent.VK_HOME);
btn_prev = create_button("ar_prev.png", "prev", KeyEvent.VK_LEFT);
btn_next = create_button("ar_next.png", "next", KeyEvent.VK_RIGHT);
btn_tail = create_button("ar_tail.png", "tail", KeyEvent.VK_END);
panel_cntl = new JPanel();
panel_cntl.add(btn_head);
panel_cntl.add(btn_prev);
panel_cntl.add(btn_next);
panel_cntl.add(btn_tail);
panel_cntl.setBackground(background);
this.setLayout(new BorderLayout());
this.add(panel_head, BorderLayout.NORTH);
this.add(panel_view, BorderLayout.CENTER);
this.add(panel_cntl, BorderLayout.SOUTH);
init_panel(getRootPane());
init_panel(panel_view);
init_panel(panel_cntl);
}
private void create_menu() {
//Create the menu bar. Make it have a green background.
JMenuBar greenMenuBar = new JMenuBar();
greenMenuBar.setOpaque(true);
greenMenuBar.setBackground(new Color(154, 165, 127));
greenMenuBar.setPreferredSize(new Dimension(200, 20));
setJMenuBar(greenMenuBar);
}
private JButton create_button(String icon, String name, int key) {
URL ref = getDocumentBase();
JButton btn = new JButton(new ImageIcon(getImage(ref, "img/" + icon)));
Dimension size = new Dimension(35, 16);
//btn.setMaximumSize(size);
//btn.setMinimumSize(size);
btn.setPreferredSize(size);
btn.addActionListener(this);
btn.setActionCommand(name);
btn.setMnemonic(key);
return btn;
}
private void init_panel(JComponent panel) {
Action goFore = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
setButtons(panel_view.next());
}
};
Action goBack = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
setButtons(panel_view.prev());
}
};
panel.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "goBack");
panel.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "goFore");
panel.getActionMap().put("goBack", goBack);
panel.getActionMap().put("goFore", goFore);
panel.setFocusable(true);
}
public void start() {
panel_view.init();
}
public void stop() {
}
public void destroy() {
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("head"))
setButtons(panel_view.head());
else if (command.equals("prev"))
setButtons(panel_view.prev());
else if (command.equals("next"))
setButtons(panel_view.next());
else if (command.equals("tail"))
setButtons(panel_view.tail());
}
private void setButtons(int pos) {
switch (pos) {
case 0:
btn_head.setEnabled(false);
btn_prev.setEnabled(false);
btn_next.setEnabled(true);
btn_tail.setEnabled(true);
break;
case 1:
btn_head.setEnabled(true);
btn_prev.setEnabled(true);
btn_next.setEnabled(true);
btn_tail.setEnabled(true);
break;
case 2:
btn_head.setEnabled(true);
btn_prev.setEnabled(true);
btn_next.setEnabled(false);
btn_tail.setEnabled(false);
break;
}
}
}
class SwingViewPanel extends JPanel {
JApplet app;
String location;
String gameid;
String title;
String player1;
String player2;
int lastnumb;
int sequence;
Image image;
Image img_south;
Image img_north;
Color background = new Color(240, 230, 210);
MediaTracker mt = new MediaTracker(this);
public SwingViewPanel(String url, String id, JApplet a) {
location = url;
gameid = id;
app = a;
try {
lastnumb = Integer.parseInt(getInfo("/pubGetMaxNum"));
sequence = Integer.parseInt(getInfo("/pubGetCurNum"));
String u8 = getInfo("/pubGetTitle");
title = new String(u8.getBytes("8859_1"), "UTF-8");
u8 = getInfo("/pubGetPlayer1");
player1 = new String(u8.getBytes("8859_1"), "UTF-8");
u8 = getInfo("/pubGetPlayer2");
player2 = new String(u8.getBytes("8859_1"), "UTF-8");
}
catch (java.lang.Exception e) {
}
finally {
}
}
public void init() {
setBackground(background);
image = createImage(220, 220);
img_north = createImage(206, 10);
img_south = createImage(206, 10);
setImage();
}
public String getInfo(String method){
try {
URL u = new URL(location + gameid + method);
InputStream s = u.openStream();
StringBuffer strbuf = new StringBuffer();
int n = 0;
int c = s.read();
while (c != -1) {
strbuf.insert(n++, (char)c);
c = s.read();
}
s.close();
return strbuf.toString();
}
catch (java.net.MalformedURLException e) {
}
catch (java.lang.Exception e) {
}
finally {
}
return null;
}
public void setImage(){
String seq = "/show?seq=" + (new Integer(sequence).toString());
try {
// board image
URL u = new URL(location + gameid + seq);
image = app.getImage(u);
mt.addImage(image, 0);
//app.showStatus("Loading..." + u.toString());
app.showStatus("Loading..." + gameid + seq);
// north image
Graphics gc = img_north.getGraphics();
gc.setColor(background);
gc.fillRect(0, 0, 220, 10);
gc.setColor(Color.black);
gc.setFont(new Font("Mono", Font.PLAIN, 10));
gc.drawString(player2, 20, 8);
// south image
gc = img_south.getGraphics();
gc.setColor(background);
gc.fillRect(0, 0, 220, 10);
gc.setColor(Color.black);
gc.setFont(new Font("Mono", Font.PLAIN, 10));
gc.drawString(sequence + "/" + lastnumb, 4, 8);
gc.drawString(player1, 140, 8);
}
catch (java.net.MalformedURLException e) {
image = createImage(10, 10);
}
catch (java.lang.Exception e) {
}
finally {
}
}
public void paint(Graphics g) {
if (mt.checkID(0,true)) {
g.drawImage(img_north, 0, 22, this);
g.drawImage(image, 0, 32, background, this);
g.drawImage(img_south, 0, 210, this);
g.setFont(new Font("Serif", Font.BOLD, 14));
g.drawString(title, 40, 15);
requestFocus();
//app.showStatus("Loading image... complete");
}
else {
repaint();
}
}
public void update(Graphics g) {
paint(g);
}
public int head() {
if (sequence > 0) {
sequence = 0;
setImage();
repaint();
}
return 0;
}
public int prev() {
if (sequence > 0) {
sequence--;
setImage();
repaint();
}
return (sequence > 0)? 1: 0;
}
public int next() {
if (sequence < lastnumb) {
sequence++;
setImage();
repaint();
}
return (sequence < lastnumb)? 1: 2;
}
public int tail() {
if (sequence < lastnumb) {
sequence = lastnumb;
setImage();
repaint();
}
return 2;
}
}
|