Solved

Java Client Applet - JTextArea and JList not streching full way

Posted on 2010-08-16
19
542 Views
Last Modified: 2012-05-10
My JTextArea and JList is not streching all the way. I have tried setting the width and height for Jlist but I kept doing it incorrectly. ... same thing for JTextArea maybe?

tileGen
/**
Mystik Client
Programer: Dan J.
Many thanks to objects & CEHJ
Started May 23, 2010
(c) 2010
 **/

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.swing.DefaultListModel;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class tileGen extends JApplet implements KeyListener, MouseListener,
            ActionListener, Runnable {

      Image[] tiles;
      Image[] weapon;
      Image[] userImg;
      String[] user;
      int x, y, px, py, tx, ty; // x tile - y tile // player x - player y // tile
      // x - tile y
      boolean left, right, down, up, canMove, respawn;
      boolean drawFlail, drawBattleaxe;
      public static int[][] board;
      final int NUM_TILES = 200;
      final int NUM_WEAPS = 2;
      boolean[] weaponPicked;
      JLabel lx, ly; // to see where we are!
      int r1, r2, u1, u2, l1, l2, d1, d2, spawnX, spawnY;
      int rightSide = 480;
      int downSide = 320;
      int mapX = 15;
      int mapY = 10;
      String txtLastFX, txtLastFY;
      boolean boolRC, boolLC, boolUC, boolDC;
      int leftMap, upMap, rightMap, downMap, currentMap, map;
      public JTextArea c = new JTextArea();
      public JTextArea stats = new JTextArea();
      public static String newline;

      public static Font TimesR = new Font("MonoSpaced", Font.BOLD, 15);
      public static tileGen anItem;
      public static boolean firstpush = false;
      String name, desc, typeOf, attackAdd, defenseAdd, canSell, canEat,
                  earnedCoins, canEquip;
      public static int blkStr;
      public static Random roll = new Random();
      // public static String me.getUsername();
      public static int[] userPX;
      public static int[] userPY;
      private Map<String, Player> players = new HashMap<String, Player>();
      public static String[] tokens;
      public static String[] temp;
      public static boolean isResp = false;
      public static String myCommand = "move";
      private Player me;
      public static boolean chatOne = false;
      public int red = 0;
      public static JTextField say = new JTextField();
      public GamePanel game = new GamePanel();
      int xpos, ypos;
      int rect1xco, rect1yco, rect1width, rect1height;
      boolean gameClicked;
      public DefaultListModel model = new DefaultListModel();

      // Network schtuff
      public static PrintStream os = null;
      static Socket clientSocket = null;
      static BufferedReader in;
      static boolean closed;

      int lastX, lastY, row, col;
      JLabel lbl1, lbl2, p1, p2, lblRC;

      int attack, defense, gold, level, exp;

      public static void showInventory(ArrayList<String> theList) {
            for (int i = 0; i < theList.size(); i++) {
                  System.out.println(theList.get(i));
            }
      }

      public void init() {

            setLayout(new BorderLayout());
            JPanel invOne = new JPanel(); // inventory panel

            // JPanel banner = new JPanel();

            JPanel main = new JPanel(new BorderLayout());
            main.add(game, BorderLayout.CENTER); // game screen;
            main.add(c, BorderLayout.SOUTH); // chat/textarea screen
            add(main, BorderLayout.CENTER);
            add(say, BorderLayout.SOUTH);

            /**
             * arr.add("Hatchet"); arr.add("Sword"); arr.add("Shield"); arr.add(gold
             * + " Gold"); System.out.println("You have " + arr.size() +
             * " items in your inventory."); showInventory(arr);
             **/

            JList list = new JList(model);

            model.addElement("Flail");

            list.addMouseListener(this);
            say.addKeyListener(this);

            list.setVisible(true);

            list.setFocusable(false);

            main.add(list, BorderLayout.EAST); // inventory screen

            game.setOpaque(false);

            // game.setBounds(0, 0, 416, 288);

            c.setBackground(Color.white);
            c.setForeground(Color.black);
            c.setFont(TimesR);
            c.setEditable(true);
            // c.setLineWrap(true);

            board = loadBoard(1);
            currentMap = 1;
            spawnY = 6;
            spawnX = 10;
            c.append("Welcome to the game, " + getParameter("name") + ".");

            this.setFocusable(true);
            addMouseListener(this);

            try {
                  tiles = new Image[NUM_TILES];
                  for (int i = 0; i < NUM_TILES; i++) {
                        tiles[i] = ImageIO.read(getClass().getResource(
                                    String.format("line_tile/t%d.png", i)));
                  }

                  weapon = new Image[NUM_WEAPS];
                  for (int xi = 0; xi < NUM_WEAPS; xi++) {
                        weapon[xi] = ImageIO.read(getClass().getResource(
                                    String.format("weapon/w%d.gif", xi)));
                  }
            } catch (Exception ex) {
                  ex.printStackTrace();
            }
            userPX = new int[10];
            for (int i = 0; i < 10; i++) {
                  userPX[i] = -100;
            }

            userPY = new int[10];
            for (int i = 0; i < 10; i++) {
                  userPY[i] = -100;
            }

            // demo
            // player = getImage(getClass().getResource("me.gif")); // our player
            game.addKeyListener(this);
            canMove = true;

            String txtY = Integer.toString(spawnY);
            String txtX = Integer.toString(spawnX);

            py = spawnY * 32;
            px = spawnX * 32;

            lastY = spawnY;
            lastX = spawnX;

            drawFlail = true;
            drawBattleaxe = true;
            this.setFocusable(true);
            game.setFocusable(true);
            c.setFocusable(false);

            invOne.setVisible(true);

            // blkStr = board[5][5];
            // System.out.println("Teh black one: " +blkStr);
            // board[5][5] = 26;

            game.requestFocusInWindow();

      }

      public void start() {
            new Thread(this).start();

      }

      public void playerLogin() throws IOException {

            Random roll = new Random();
            int newNo = roll.nextInt(200);
            // me.getUsername() = "Guest #" + roll.nextInt(110);
            // String me.getUsername() = getParameter("name");

            me = new Player();
            me.setUsername(getParameter("name"));
            me.setPlayerImage(ImageIO.read(getClass().getResource("me.gif")));
            me.setX(256);
            me.setY(256);
            me.setMap(1);
            me.setCommand("move");
            players.put(me.getUsername(), me);

            repaint();

            System.out.println(me.getUsername() + " was added. player: " + me);
            os.println(me.getUsername() + "|" + me.getX() + "|" + me.getY() + "|"
                        + me.getMap() + "|" + me.getCommand());

            attack = 4;
            defense = 5;
            gold = 542;
            level = 1;
            exp = 53;

      }

      public void mousePressed(MouseEvent e) {
      }

      public void mouseReleased(MouseEvent e) {
      }

      public void mouseEntered(MouseEvent e) {
      }

      public void mouseExited(MouseEvent e) {
      }

      // equip - use - select
      public void mouseClicked(MouseEvent e) {

            xpos = me.getX();
            ypos = me.getY();

            rect1xco = 0;
            rect1yco = 0;
            rect1width = 480;
            rect1height = 320;

            if (xpos > rect1xco && xpos < rect1xco + rect1width && ypos > rect1yco
                        && ypos < rect1yco + rect1height) {
                  // game.requestFocusInWindow();
                  c.append("\nYou clicked on the game.");
            }

      }

      private static final HashSet<Integer> BLOCKED_TILES = new HashSet<Integer>();
      static {

            /**
             * BLOCKED_TILES.add(118); BLOCKED_TILES.add(67);
             * BLOCKED_TILES.add(190); BLOCKED_TILES.add(40);
             * BLOCKED_TILES.add(135); BLOCKED_TILES.add(520);
             * BLOCKED_TILES.add(25); BLOCKED_TILES.add(91); BLOCKED_TILES.add(394);
             * BLOCKED_TILES.add(1); BLOCKED_TILES.add(121);
             **/

            BLOCKED_TILES.add(1);
            BLOCKED_TILES.add(6);
            BLOCKED_TILES.add(7);
            // add more tiles here
      }

      public void actionPerformed(ActionEvent actionevent) {
            // game.requestFocusInWindow();
      }

      public Player getPlayer(String username) {
            return players.get(username);
      }

      public void run() {

            System.out.println("run() still going..");

            Socket s = null;

            try {

                  // s = new Socket(getParameter("host"),
                  // Integer.valueOf(getParameter("port"));
                  // s = new Socket(getParameter("host"),
                  // Integer.valueOf(getParameter("port")));
                  s = new Socket("localhost", 25566);
                  in = new BufferedReader(new InputStreamReader(s.getInputStream()));

                  os = new PrintStream(s.getOutputStream());

                  playerLogin();

                  int buf = -1;
                  String responseLine;

                  // rawr
                  while ((responseLine = in.readLine()) != null) {
                        isResp = true;

                        chatOne = true;
                        // c.append("\nxxx\n");
                        // System.out.println("responseLine (|): " + responseLine);

                        String str = responseLine;

                        String delimiter = "\\|";

                        String[] temp = str.split(delimiter);

                        // c.append("\noutput: " + str);

                        // pid
                        Player player = players.get(temp[0]);

                        if ("chat".equalsIgnoreCase(temp[4])) {
                              c.append("\n" + temp[0] + " says: " + temp[2]);

                              // sendMsg(temp[0], temp[2], me.getUsername());

                        }

                        if (player == null) {

                              player = new Player();
                              player.setUsername(temp[0]);
                              player.setX(Integer.parseInt(temp[1]));
                              player.setY(Integer.parseInt(temp[2]));
                              player.setCommand(temp[4]);
                              player.setPlayerImage(ImageIO.read(getClass().getResource(
                                          "me.gif")));
                              player.setMap(1);
                              players.put(temp[0], player);
                        }
                        if ("move".equalsIgnoreCase(temp[4])) {
                              // c.append("\n"+temp[2] + " and temp 4: " + temp[4]);
                              player.setX(Integer.parseInt(temp[1]));
                              player.setY(Integer.parseInt(temp[2]));
                              player.setMap(Integer.parseInt(temp[3]));
                        }
                        player.setCommand(temp[4]);
                        player.setUsername(temp[0]);
                        System.out.println("X set: " + player.getX() + " | Y set: "
                                    + player.getY() + " | CurrMap set: " + player.getMap()
                                    + " | Username set: " + player.getUsername()
                                    + " | Command set: " + temp[4]);

                        repaint();

                  }
                  repaint();

            } catch (Exception rwe) {
                  // System.exit(0);
                  System.out.println("Server went down -- crap!");
                  rwe.printStackTrace();
            } finally {
                  try {
                        s.close();
                  } catch (IOException ere) {
                        ere.printStackTrace();
                  }
            }

      }

      public void sendMsg(String e, String msg, String getUser) {

            // c.append("\n Temp0: " + temp[0] +
            // "| me.getUsername: "+me.getUsername());

            String whosay;
            if (!temp[0].equals(me.getUsername())) {

                  whosay = e;
            } else {
                  whosay = me.getUsername();
            }
            c.append("\n" + e + " says: " + msg);
      }

      public void keyPressed(KeyEvent e) {

            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                  Toolkit.getDefaultToolkit().beep();
                  myCommand = "chat";
                  os.println(me.getUsername() + "|1|" + say.getText() + "|yes|chat");
                  say.setText("");
                  say.setCaretPosition(say.getDocument().getLength());

            }
            // getPlayers();

            repaint();

            myCommand = "move";
            System.out.println("PRESSED" + myCommand);

            if (isInBound(lastX, lastY) == true) {
                  System.out.println("\nYOU WENT OFF THE GRID.\n");
            }

            right = true;
            left = true;
            up = true;
            down = true;

            // c.append("\nInventory selection: " + choice);

            // DESCRIBE ITEM
            if (e.getKeyCode() == KeyEvent.VK_D) {
                  Object sup = 1;
                  String xda = sup.toString();
                  String descInv = invShow(xda);
                  c.append("\n" + descInv);
            }

            if (e.getKeyCode() == KeyEvent.VK_S) {
                  int numToReplace = 0;
                  int replacement = 7;
                  // loop through each nested array
                  for (int i = 0; i < board.length; i++) {
                        // loop through each element of the nested array
                        for (int j = 0; j < board[i].length; j++) {
                              if (board[i][j] == numToReplace) {
                                    board[i][j] = replacement;
                              }
                        }
                  }
            }

            // USE
            if (e.getKeyCode() == KeyEvent.VK_U) {

                  // MAP ONE
                  if (currentMap == 1) {

                        // OPEN BLOCKED TILES
                        if (spawnX == 10 && spawnY == 7) {
                              board[8][10] = 167;
                              c.append("\nYou opened a door.");
                        }

                  }

                  // MAP ONE

            }

            // PICK UP
            if (e.getKeyCode() == KeyEvent.VK_G) {

                  // MAP ONE
                  if (currentMap == 1) {

                        if (spawnX == 4 && spawnY == 4) {
                              int xav = board[4][4];
                              board[4][4] = 7;
                              drawFlail = false;
                              try {
                                    anItem.addInv(1);
                              } catch (Exception ere) {
                                    ere.printStackTrace();
                              }

                        }

                  }

                  // MAP ONE
                  if (currentMap == 3) {

                        if (spawnX == 3 && spawnY == 3) {
                              int xav = board[3][3];
                              board[3][3] = 1;
                              drawBattleaxe = false;
                              try {
                                    anItem.addInv(2);
                              } catch (Exception ere) {
                                    ere.printStackTrace();
                              }

                        }

                  }
                  // MAP ONE

            }

            try {
                  if (blocked(spawnX - 1, spawnY) == true && spawnX == mapX) {
                        left = false;
                        System.out.println("You can't go left!");
                  }
                  if (blocked(spawnX + 1, spawnY) == true && spawnX == 0) {
                        right = false;
                        System.out.println("You can't go right!");
                  }
                  if (blocked(spawnX, spawnY + 1) == true && spawnX == mapX) {
                        down = false;
                        System.out.println("You can't go down!");
                  }
                  if (blocked(spawnX, spawnY - 1) == true && spawnX == mapX) {
                        up = false;
                        System.out.println("You can't go up!");
                  }

            } catch (ArrayIndexOutOfBoundsException xe) {
                  xe.printStackTrace();
            }

            try {
                  if (blocked(spawnX + 1, spawnY) == true)
                        right = false;
            } catch (ArrayIndexOutOfBoundsException xe) {
                  System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
            }

            try {
                  if (blocked(spawnX - 1, spawnY) == true)
                        left = false;
            } catch (ArrayIndexOutOfBoundsException xe) {
                  System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
            }

            try {
                  if (blocked(spawnX, spawnY + 1) == true)
                        down = false;
            } catch (ArrayIndexOutOfBoundsException xe) {
                  System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
            }

            try {
                  if (blocked(spawnX, spawnY - 1) == true)
                        up = false;
            } catch (ArrayIndexOutOfBoundsException xe) {
                  System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
            }

            if (blocked(12, 7) == true && spawnX == mapX && spawnY - 1 == 1 - mapX) {
                  up = false;
            }

            int r1 = lastX + 1;
            if (lastX > 0) {
                  r1 = lastX + 1;
            } else {
                  r1 = 0;
            }
            int r2 = lastY;

            int u1 = lastX;
            int u2;
            if (lastY > 0) {
                  u2 = lastY - 1;
            } else {
                  u2 = 0;
            }

            int l1;
            if (spawnX > 0) {
                  l1 = lastX - 1;
            } else {
                  l1 = 0;
            }
            int l2 = spawnY;

            int d1 = lastX;
            int d2;
            if (lastY > 0) {
                  d2 = lastY + 1;
            } else {
                  d2 = 0;
            }

            try {
                  if (blocked(r1, r2) == true)
                        right = false; // we cannot go right
                  if (blocked(u1, u2) == true)
                        up = false; // we cannot go up
                  if (blocked(l1, l2) == true)
                        left = false; // we cannot go left
                  if (blocked(d1, d2) == true)
                        down = false; // we cannot go down

            } catch (ArrayIndexOutOfBoundsException xe) {
                  System.out
                              .println("\n\nFuture block Array Index Out of Bounds Exception!!\n\n");
            }

            leftMap = 0;
            upMap = 0;
            rightMap = 0;
            downMap = 0;

            boolRC = false;
            boolLC = false;
            boolUC = false;
            boolDC = false;

            // Border Checks
            if (spawnX == mapX && e.getKeyCode() == KeyEvent.VK_RIGHT) {
                  boolRC = true;
            }

            if (spawnX == 0 && e.getKeyCode() == KeyEvent.VK_LEFT) {
                  boolLC = true;
            }

            if (spawnY == 0 && e.getKeyCode() == KeyEvent.VK_UP) {
                  boolUC = true;
            }

            if (spawnY == mapY && e.getKeyCode() == KeyEvent.VK_DOWN) {
                  boolDC = true;
            }

            /** MAP SWITCHING **/
            /** MAP SWITCHING **/
            /** MAP SWITCHING **/

            if (currentMap == 1) {
                  leftMap = 3;
                  upMap = 2;
                  rightMap = 4;
                  downMap = 5;

            } else if (currentMap == 4) {
                  leftMap = 1;
            } else if (currentMap == 2) {

                  downMap = 1;
            } else if (currentMap == 3) {

                  downMap = 1;
            }
            if (currentMap == 5) {

                  upMap = 1;
            }

            if (leftMap == 0 && spawnX == 0)
                  left = false;
            if (rightMap == 0 && spawnX == mapX)
                  right = false;
            if (downMap == 0 && spawnY == mapY)
                  down = false;
            if (upMap == 0 && spawnY == 0)
                  up = false;

            if (e.getKeyCode() == KeyEvent.VK_UP && up == true) {
                  spawnY = spawnY - 1;
                  System.out.println("You went up.");
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN && down == true) {
                  spawnY = spawnY + 1;
                  System.out.println("You went down.");
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT && right == true) {
                  spawnX = spawnX + 1;
                  System.out.println("You went right.");
            }
            if (e.getKeyCode() == KeyEvent.VK_LEFT && left == true) {
                  spawnX = spawnX - 1;
                  System.out.println("You went left.");
            }

            // RIGHT TO LEFT
            // LEFT TO RIGHT DONE
            if (boolRC == true && right == true) {
                  spawnX = 0;
                  lastX = spawnX;
                  spawnY = spawnY;
                  board = loadBoard(rightMap);
                  px = 0;
                  py = py;
                  currentMap = rightMap;
            }

            if (boolLC == true && left == true) {
                  spawnX = mapX;
                  lastX = spawnX;
                  spawnY = spawnY;
                  board = loadBoard(leftMap);
                  px = rightSide;
                  py = py;
                  currentMap = leftMap;
            }

            if (boolUC == true && up == true) {
                  spawnY = mapY;
                  lastY = spawnY;
                  spawnX = spawnX;
                  board = loadBoard(upMap);
                  px = px;
                  py = downSide;
                  currentMap = upMap;
            }

            if (boolDC == true && down == true) {
                  spawnY = 0;
                  lastY = spawnY;
                  spawnX = spawnX;
                  board = loadBoard(downMap);
                  px = px;
                  py = 0;
                  currentMap = downMap;
            }

            /** MAP SWITCHING **/
            /** MAP SWITCHING **/
            /** MAP SWITCHING **/

            String currX = Integer.toString(spawnX);
            String currY = Integer.toString(spawnY);
            System.out.println("Current/Last Y: " + currY + "/" + lastY);
            System.out.println("Current/Last X: " + currX + "/" + lastX + " - "
                        + board[spawnY][spawnX] + "\n\n");

            if (boolLC == false) {
                  if (left == true) {
                        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                              left = true;
                              px = px - 32;
                              lastX = lastX - 1;
                        }
                  }
            } else {
                  if (leftMap > 0)
                        px = rightSide;
            }

            if (boolRC == false) {
                  if (right == true) {
                        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                              right = true;
                              px = px + 32;
                              lastX = lastX + 1;
                        }
                  }
            } else {
                  if (rightMap > 0)
                        px = 0;
            }

            if (boolDC == false) {

                  if (down == true) {
                        if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                              down = true;
                              py = py + 32;
                              lastY = lastY + 1;

                        }
                  }
            } else {
                  if (downMap > 0)
                        py = 0;

            }

            if (boolUC == false) {
                  if (up == true) {

                        if (e.getKeyCode() == KeyEvent.VK_UP) {
                              up = true;
                              py = py - 32;
                              lastY = lastY - 1;
                        }
                  }
            } else {
                  if (upMap > 0)
                        py = downSide;
            }

            me = players.get(me.getUsername());

            me.setX(px);
            me.setY(py);

            if (myCommand == "move") {
                  os.println(me.getUsername() + "|" + px + "|" + py + "|"
                              + currentMap + "|move");
            } else if (myCommand == "chat") {
                  os.println(me.getUsername() + "|1|Hello, world!|yes|chat");
            }

            me.setCommand(myCommand);
            System.out.println("my curernt map! : " + currentMap);

            repaint();

      }

      public void keyReleased(KeyEvent e) {

      } // ignore

      public void keyTyped(KeyEvent e) {
      } // ignore

      public void addInv(int e) {

            String iname = getItem(e)[0];

            String idesc = getItem(e)[1];
            int itypeOf = Integer.parseInt(getItem(e)[2]);
            int iattackAdd = Integer.parseInt(getItem(e)[3]);
            int idefenseAdd = Integer.parseInt(getItem(e)[4]);
            boolean icanSell = Boolean.parseBoolean(getItem(e)[5]);
            boolean icanEat = Boolean.parseBoolean(getItem(e)[6]);
            int iearnedCoins = Integer.parseInt(getItem(e)[7]);

            c.append("\nYou picked up a " + iname + ".");
            // for (String item : arr) list.add(item);
            model.addElement(iname);
      }

      public static String invShow(String e) {

            String desc = "None";

            if (e == "Flail") {
                  desc = "A crushing blow to the head from this weapon can make BRAIN SLUSHIE!";
            }
            if (e == "Battleaxe") {
                  desc = "Holding this weapon will make you smell like a man, man.";
            }

            return desc;

      }

      public static String[] getItem(int e) {

            String[] stats = new String[7];

            String name = "Null";
            String desc = "Nonexx";
            String typeOf = "0";
            String attackAdd = "0";
            String defenseAdd = "0";
            String canSell = "true";
            String canEat = "false";
            String earnedCoins = "0";

            if (e == 1) {

                  name = "Flail";
                  typeOf = "2";
                  attackAdd = "2";
                  earnedCoins = "5";
            }

            if (e == 2) {

                  name = "Battleaxe";
                  typeOf = "2";
                  attackAdd = "4";
                  earnedCoins = "10";
            }

            return new String[] { name, desc, typeOf, attackAdd, defenseAdd,
                        canSell, canEat, earnedCoins };

      }

      public void showInventory() {

            for (int i = 0; i < model.getSize(); i++) {
                  System.out.println(model.getElementAt(i));
            }
      }


      public int[][] loadBoard(int map) {
            if (map == 1) {
                  return new int[][] {
                              { 7, 7, 7, 7, 7, 7, 13, 13, 13, 13, 7, 7, 7, 7, 7, 7 },
                              { 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
                                          13, 6 },
                              { 7, 13, 1, 13, 1, 13, 1, 13, 13, 13, 1, 1, 13, 13, 13, 6 },
                              { 7, 13, 1, 1, 1, 13, 1, 13, 13, 13, 1, 13, 13, 13, 13, 6 },
                              { 7, 13, 13, 1, 13, 13, 1, 13, 13, 13, 1, 13, 13, 13, 13, 6 },
                              { 7, 13, 1, 1, 1, 13, 1, 1, 1, 13, 1, 1, 1, 1, 13, 6 },
                              { 7, 13, 1, 13, 13, 13, 13, 13, 1, 13, 13, 1, 13, 13, 13, 6 },
                              { 7, 13, 1, 1, 13, 13, 13, 1, 1, 13, 13, 1, 13, 13, 13, 6 },
                              { 7, 13, 13, 13, 13, 13, 13, 1, 13, 13, 13, 1, 13, 13, 13,
                                          6 },
                              { 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
                                          13, 6 },
                              { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 } };
            } else if (map == 2) {
                  return new int[][] {
                              { 145, 145, 55, 145, 145, 55, 184, 163, 55, 163, 163, 55,
                                          145, 181, 145, 145 },
                              { 145, 13, 145, 145, 166, 166, 166, 163, 163, 13, 13, 13,
                                          13, 13, 13, 145 },
                              { 145, 13, 13, 163, 166, 166, 166, 163, 13, 13, 13, 13, 13,
                                          13, 13, 163 },
                              { 145, 13, 13, 163, 166, 166, 166, 163, 13, 145, 145, 145,
                                          145, 145, 13, 145 },
                              { 145, 13, 13, 163, 166, 166, 166, 163, 13, 145, 166, 166,
                                          166, 145, 13, 145 },
                              { 145, 13, 13, 163, 163, 95, 163, 145, 13, 145, 166, 166,
                                          166, 145, 13, 145 },
                              { 145, 13, 13, 13, 13, 13, 13, 13, 13, 166, 166, 166, 166,
                                          145, 13, 145 },
                              { 145, 145, 13, 13, 13, 13, 13, 13, 13, 163, 145, 55, 145,
                                          145, 13, 145 },
                              { 145, 145, 145, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
                                          13, 13, 145 },
                              { 145, 145, 145, 145, 13, 13, 13, 13, 13, 13, 13, 13, 13,
                                          13, 13, 145 },
                              { 145, 145, 145, 145, 145, 145, 13, 13, 13, 13, 13, 145,
                                          145, 145, 145, 145 } };
            }

            return board;
      }

      public boolean blocked(int tx, int ty) {
            return BLOCKED_TILES.contains(board[ty][tx]);
      }

      public boolean isInBound(int r, int c) {
            return (r >= 0) && (r < 8) && (c >= 12) && (c < 1);
      }

      class GamePanel extends JPanel {

            public void paintComponent(Graphics g) {
                  for (row = 0; row < board.length; row++) {
                        for (col = 0; col < board[row].length; col++) {
                              int index = board[row][col];
                              g.drawImage(tiles[index], 32 * col, 32 * row, this);

                        }
                  }

                  try {
                        for (Player player : players.values()) {
                              System.out.println("++++++++++++++++++++++++++");
                              System.out.println("current map: " + player.getMap());
                              if (player.getUsername() == me.getUsername())
                                    player.setMap(currentMap);
                              if (player.getUsername() == me.getUsername())
                                    player.setCommand(myCommand);
                              if (player.getMap() == currentMap) {
                                    g.drawImage(player.getPlayerImage(), player.getX(), player
                                                .getY(), this);

                              }
                              System.out.println("Command-- " + player.getCommand() + " > "
                                          + player.getUsername() + " moved to X:" + player.getX()
                                          + " and Y: " + player.getY());

                              System.out.println("++++++++++++++++++++++++++");
                        }
                  } catch (Exception dan) {
                        System.out.println("No one is on.");
                  }

                  // qq
                  /**
                   * for(int runx = 0;runx < 10;runx++) { g.drawImage(userImg[runx],
                   * userPX[runx], userPY[runx], this); }
                   **/

                  if (drawFlail == true && currentMap == 1)
                        g.drawImage(weapon[1], 32 * 4, 32 * 4, this);
                  if (drawBattleaxe == true && currentMap == 3)
                        g.drawImage(weapon[0], 32 * 3, 32 * 3, this);
                  System.out.println(drawFlail);
            }

      }
} // end whole thing3

Open in new window


:)
0
Comment
Question by:UrbanTwitch
  • 11
  • 8
19 Comments
 
LVL 92

Expert Comment

by:objects
ID: 33450955
you need to set the preferred size

            list.setPreferredSize(new Dimension(w, h));

The BorderLayout sizes each component to its preferred size
with any space space given to CENTER component
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33450989
Oh, I must have taken it out somewhere. Thanks.

What about the Jextarea?
0
 
LVL 92

Expert Comment

by:objects
ID: 33451011
same deal (as it is also managed by a BorderLayout)
0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451015
So that means every time the applet width and height is changed... the jtextarea will too?
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451025
I am setting it to this:
c.setPreferredSize(new Dimension(520,100));
but it's not working :(
0
 
LVL 92

Expert Comment

by:objects
ID: 33451096
> So that means every time the applet width and height is changed... the jtextarea will too?

typically the applet width and height would not change (as its specified in the html)

if it did though the text area width would adjust to the width of the applet (because it is in SOUTH)
the height would stay the same
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451121
That is correct. Right :)

But why isn't this working? :o
c.setPreferredSize(new Dimension(520,100));

Open in new window

0
 
LVL 92

Expert Comment

by:objects
ID: 33451143
> but it's not working :(

what do you expect to happen.
Only the height would be affected, SOUTH component will be stretched to fill container width
http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451210
Ooooooh, I get it. I get it. now :) So... what do you suggest I do?
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451221
Wait wait.. how come when ti was a Textarea it looked fine in the GUI?
0
 
LVL 92

Expert Comment

by:objects
ID: 33451272
TextArea looks the same to me (with preferred size set), probably a different default preferred size would be the difference

Not sure exactly how its not looking like you want
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451309
Mind taking a screenshot? :)

This is how mine looks:

huzzah.png
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451310
I want the Textarea to fill up the gray spot at top and STAY there. :)
But I tried doing the dimension settings -- no luck.
0
 
LVL 92

Expert Comment

by:objects
ID: 33451388
that doesn't look its 100, where are you setting preferred size?
0
 
LVL 92

Expert Comment

by:objects
ID: 33451405
also if you want the text area to be taking up any available space then it should be in the CENTER (and game panel in the NORTH)
NORTH and SOUTH have fixed heights
EAST and WEST have fixed widths
CENTER taks any space left over
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451477
Oh I get it. I moved the setPreferredSize and now does this look better? :)

Only problem now? The JTextArea does not scroll. I suppose I have to set Verticle scroll always or can it be whenever there is text? Or should I always set it for always because there will never be a chance for when they ever NOT need the scrollbar :P

Here is the new image and my init()
public void init() {

            setLayout(new BorderLayout());
            JPanel invOne = new JPanel(); // inventory panel

            // JPanel banner = new JPanel();

            JPanel main = new JPanel(new BorderLayout());
            main.add(game, BorderLayout.CENTER); // game screen;
            main.add(c, BorderLayout.SOUTH); // chat/textarea screen
            add(main, BorderLayout.CENTER);
            add(say, BorderLayout.SOUTH);

            /**
             * arr.add("Hatchet"); arr.add("Sword"); arr.add("Shield"); arr.add(gold
             * + " Gold"); System.out.println("You have " + arr.size() +
             * " items in your inventory."); showInventory(arr);
             **/

            JList list = new JList(model);

            model.addElement("Flail");

            list.addMouseListener(this);
            say.addKeyListener(this);

            list.setVisible(true);

            list.setFocusable(false);
            list.setPreferredSize(new Dimension(100,480));



            main.add(list, BorderLayout.EAST); // inventory screen

            game.setOpaque(false);

            // game.setBounds(0, 0, 416, 288);

            c.setBackground(Color.white);
            c.setForeground(Color.black);
            c.setFont(TimesR);
            c.setEditable(true);
            c.setPreferredSize(new Dimension(520,100));
            // c.setLineWrap(true);

            board = loadBoard(1);
            currentMap = 1;
            spawnY = 6;
            spawnX = 10;
            c.append("Welcome to the game, " + getParameter("name") + ".");

            this.setFocusable(true);
            addMouseListener(this);

            try {
                  tiles = new Image[NUM_TILES];
                  for (int i = 0; i < NUM_TILES; i++) {
                        tiles[i] = ImageIO.read(getClass().getResource(
                                    String.format("line_tile/t%d.png", i)));
                  }

                  weapon = new Image[NUM_WEAPS];
                  for (int xi = 0; xi < NUM_WEAPS; xi++) {
                        weapon[xi] = ImageIO.read(getClass().getResource(
                                    String.format("weapon/w%d.gif", xi)));
                  }
            } catch (Exception ex) {
                  ex.printStackTrace();
            }

            // demo
            // player = getImage(getClass().getResource("me.gif")); // our player
            game.addKeyListener(this);
            canMove = true;

            String txtY = Integer.toString(spawnY);
            String txtX = Integer.toString(spawnX);

            py = spawnY * 32;
            px = spawnX * 32;

            lastY = spawnY;
            lastX = spawnX;

            drawFlail = true;
            drawBattleaxe = true;
            this.setFocusable(true);
            game.setFocusable(true);
            c.setFocusable(false);

            invOne.setVisible(true);

            // blkStr = board[5][5];
            // System.out.println("Teh black one: " +blkStr);
            // board[5][5] = 26;

            game.requestFocusInWindow();

      }

Open in new window

huhhzah.png
0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451484
Don't I need a JScrollPane to be able to modify the JTextArea?
0
 
LVL 92

Accepted Solution

by:
objects earned 500 total points
ID: 33451535
yes add a scroll pane (and set its preferred size instead of the text area)

            JScrollPane scrolledChat = new JScrollPane(c);
            scrolledChat.setPreferredSize(new Dimension(520,100));
            main.add(scrolledChat, BorderLayout.SOUTH); // chat/textarea screen

0
 
LVL 5

Author Comment

by:UrbanTwitch
ID: 33451565
Woohoo! got it!

Now I got 2 new problems... :\
i'll open a new q for the first one.
woop.png
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
java stored proc example 9 46
What's wrong with this code? 4 28
pagenation logic how it is working in my code 1 57
Eclipse Java import and method not resolved 4 52
INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question