Go Back   CodingForums.com > :: Server side development > Java and JSP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 12-22-2010, 04:28 AM   PM User | #1
Lazaeus
New to the CF scene

 
Join Date: Dec 2010
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Lazaeus is an unknown quantity at this point
Adding different popup menus to different buttons.

I am making a game and I am stuck on something. In a loop I want to fill buttons with data from an Vector. Each one should have a different JPopupMenu on right click. If the item is a sword, and I right click on the button, it should say Equip sword and Destroy sword.

Item Class
Code:
import java.util.Vector;

public class Item {
	protected String weaponName, modifierType, classType;
	protected int damage, levelReq;
	protected static Vector<Item> allWeapons = new Vector<Item>();
	protected static Vector<Item> allItems = new Vector<Item>();
	
	//default constructor initializes weapons and items---->
	Item() {
		initWeapons();
	}
	
	//constructor for weapons creation--------------------->
	Item(String _Name, String _Modifier, String _class, int _level, int _damage){
		setName(_Name);
		setModifierType(_Modifier);
		setClass(_class);
		setLevel(_level);
		setDamage(_damage);
	}

	//initialize all of the games weapons------------------>
	public void initWeapons(){
		Item s = new Item("Sword", "Normal", "Swordsman", 1, 3);
		Item ar = new Item("Bow", "Normal", "Archer", 1, 3);
		Item ac = new Item("Staff", "Normal","Acolyte", 1, 3);
		
		Item s2 = new Item("Straight Sword", "Normal", "Swordsman", 3, 5);

		
		Item ultraBlade = new Item("Dark-Chasm Staff", "Flame", "NONE", 30, 60);
		
		for ( int i = 0; i < 23; i ++)
		allWeapons.add(ultraBlade);
		
		allWeapons.add(s);
		allWeapons.add(ar);
	}

	//set functions--------------------------------------->
	public void setName(String _Name) {
		weaponName = _Name;
	}
	
	public void setModifierType(String _Modifier){
		modifierType = _Modifier;
	}
	
	public void setDamage(int _damage){
		damage = _damage;
	}
	
	public void setClass(String _class) {
		classType = _class;
	}

	public void setLevel(int level) {
		levelReq = level;
	}
	
	//get functions-------------------------------------->
	public String getName() {
		return weaponName;
	}
	
	public String getModifier(){
		return modifierType;
	}
	
	public String getClassType(){
		return classType;
	}
	
	public int getLevel(){
		return levelReq;
	}
	
	public int	getDamage(){
		return damage;
	}
}
Inventory Class
Code:
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

import java.util.*;

public class Inventory {
	private static int inventorySize = 25;
	private int capRemaining;
	private JButton[] inventorySlot;
	protected static Vector<Item> inventory = new Vector<Item>(inventorySize);
	public JMenuItem destroy, equip;
	public JPopupMenu popup;
	
	//Constructor for making users inventory-------------------->
	public Inventory(int _inventorySize){
		setSize(_inventorySize);
		
		for(int i = 0; i < 25; i ++)
			inventory.add(Item.allWeapons.elementAt(i));
		
		createButtons();
	}
	
	//Create buttons-------------------------------------------->
	public void createButtons(){
		inventorySlot = new JButton[inventorySize];
		
		//Inner class to handle buttons clicked----------------->
		class InventoryHandler implements ActionListener{
			public void actionPerformed(ActionEvent e){
				Object source = e.getActionCommand();
				System.out.println(source);
			}
		}
		
		class popupHandler extends MouseAdapter {
			public void mousePressed(MouseEvent e) {
				maybeShowPopup(e);
			}

		    public void mouseReleased(MouseEvent e) {
		        maybeShowPopup(e);
		        
		    }

			private void maybeShowPopup(MouseEvent e) {
				if (e.isPopupTrigger()) {
					 popup.show(e.getComponent(),
							e.getX(), e.getY());
			    }
			}
			
		}
		
		//Fill buttons with Item Data--------------------------->
		for (int i = 0; i < inventory.size(); i++) {
			inventorySlot[i] = new JButton(inventory.elementAt(i).weaponName);
			inventorySlot[i].setToolTipText("Required Level: " 
					+ inventory.elementAt(i).levelReq
					+ "\n **Weapon name: " + inventory.elementAt(i).weaponName
					+ "\n **Weapon modifier: " + inventory.elementAt(i).modifierType
					+ "\n **Attack: +" + inventory.elementAt(i).damage
					+ "\n **REQUIRED LEVEL: " + inventory.elementAt(i).levelReq
					+ "\n **REQUIRED CLASS: " + inventory.elementAt(i).classType);
			GUI.mInventoryPanel.add(inventorySlot[i]);
			equip = new JMenuItem("Equip " + inventory.elementAt(i).weaponName);
			destroy = new JMenuItem("Destroy " + inventory.elementAt(i).weaponName);
			popup = new JPopupMenu();
			popup.add(equip);
			popup.add(destroy);
			inventorySlot[i].addActionListener(new InventoryHandler());
			inventorySlot[i].setMnemonic(i);
			inventorySlot[i].addMouseListener(new popupHandler());
		}
		
		
		//Fill the rest with Empty------------------------------>
		for (int i = 0; i < getCapRemaining(); i++) {
			inventorySlot[i] = new JButton("empty");
			GUI.mInventoryPanel.add(inventorySlot[i]);
		}
	}
	
	//Set Inventories size-------------------------------------->
	private void setSize(int _inventorySize){
		inventorySize = _inventorySize;
	}
	
	//Get inventory size---------------------------------------->
	private int getSize(){
		return inventorySize;
	}
	
	//Get capacity remaining of inventory----------------------->
	private int getCapRemaining(){
		return capRemaining = getSize()- inventory.size();
	}
	
	//remove an item from the inventory------------------------->
	private void removeAt(int location){
		inventory.remove(location);
	}
}
Right now I have just stupid items filling the array for testing. I tried setting up a JPopupMenu[] but I couldn't think of a way to do it to return to the popupHandler class... I set the mnemonic as a reference to which button it is in order. I couldn't find a way to use that either. I honestly want to learn how to figure this out for future use. Thank you in advance.
Lazaeus is offline   Reply With Quote
Reply

Bookmarks

Tags
buttons, forloop, jmenuitem, jpopupmenu, mouseadapter

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 12:28 PM.


Advertisement
Log in to turn off these ads.