Results 1 to 2 of 2
- 11-30-2012, 10:56 AM #1
Senior Member
- Join Date
- Nov 2012
- Posts
- 102
- Rep Power
- 0
Help needed for a new comer to Java!
Hello, everyone. I am trying to create a frame with components. It works. I have other request. I need to have an algorithm for adding events or removing them from specific components. I`ve tried HashMap to keep a record of the items but it appeared that actually I was passing the event handler to unasigned to the frame button. Here is my source code:
Compiling blows when I try to access the element from the hash storage, since, it`s my guess: the element does not belong to the JPAnel. However, if you compile without the event interface it works but, it appears that adding event to the element from the hash is not an option. Hash of hashes however didn`t make sense to me too. I can make a key-valye pair to the name in which I want to refer but JPanel already is bundled with buttons, that I need to refer to. The option is that JPanel must return it`s components, but I looked into the API and I did not saw any get objects methods for either JPanel or JComponent, even in Component. Component can find elements by XY but I don`t want that.Java Code:import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.LinkedList; import java.util.Vector; import java.util.HashMap; public class Calculator implements ActionListener { JFrame frame; static HashMap elements = new HashMap(); //OVERRIDES public void actionPerformed(ActionEvent e) { clicked(); } public void clicked() { System.out.println("CLICK CLICK"); } //Inner classes[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ /*###################################################################### ######### i m p o r t a n t ########################## ######################################################################*/ final static class ComponentFactory { static JComponent jComp; //OVERRIDES //End OVERRIDES /*note: Always pass a constructable componentws with "new" as args : * ex JTextField = ComponentFactory.addComponent(new JButton("bla"), new FlowLayout()); * */ public static JComponent addComponent(String name, JComponent comp, LayoutManager layout) { String k = name; JComponent v = comp; jComp = comp; elements.put(k, v); return jComp; } public static JComponent componentConstructWithComponents( String name, JComponent type, LayoutManager style, JComponent[] items) { JComponent jc = type; jc.setLayout(style); JComponent[] jitems = new JComponent[items.length]; for (int i=0; i < items.length; i++) { jc.add(items[i]); } elements.put(name, jc); return jc; //if nesting the constructions } } // end Component Factory //////// PROTO 2 Construction Factory // end Component Factory /*####################################################################*/ final static class FrameFactory { //create and set a frame for usage //fil in later... public static JFrame frameConstruct(String name, LayoutManager style, int w, int h) { JFrame jf = new JFrame(name); jf.setLayout(style); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setSize(w, h); jf.setVisible(true); return jf; } } // end Frame factory //]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] /*Methods and constructors below, must have add and remove methods,, * aswell as action events handlers. * Notes: * * * * * * * * =============================================================*/ Calculator() { frame = FrameFactory.frameConstruct( "MAINFRAME", new FlowLayout(), 300, 300); frame.add(ComponentFactory.componentConstructWithComponents( "ROW1", new JPanel(), new GridLayout(4,4,1,1), new JComponent[] { ComponentFactory.addComponent("Button1",new JButton("1"), null), ComponentFactory.addComponent("Button2",new JButton("2"), null), ComponentFactory.addComponent("Button3",new JButton("3"), null), ComponentFactory.addComponent("Button4",new JButton("4"), null), ComponentFactory.addComponent("Button5",new JButton("5"), null), ComponentFactory.addComponent("Button6",new JButton("6"), null), ComponentFactory.addComponent("Button7",new JButton("7"), null), ComponentFactory.addComponent("Button8",new JButton("8"), null), ComponentFactory.addComponent("Button9",new JButton("9"), null), ComponentFactory.addComponent("Button10",new JButton("0"), null), ComponentFactory.addComponent("Button11",new JButton("00"), null), ComponentFactory.addComponent("Button12",new JButton("."), null), })); // add calculator buttons //add symbols panel JComponent[] jButtons = { ComponentFactory.addComponent("ButtonPlus",new JButton("+"), null), ComponentFactory.addComponent("ButtonMinus",new JButton("-"), null), ComponentFactory.addComponent("ButtonMultiply",new JButton("X"), null), ComponentFactory.addComponent("ButtonDivide",new JButton("/"), null), ComponentFactory.addComponent("ButtonEqual",new JButton("="), null), ComponentFactory.addComponent("ButtonPow",new JButton("pow"), null), ComponentFactory.addComponent("ButtonSqrt",new JButton("sqrt"), null), ComponentFactory.addComponent("ButtonExp",new JButton("exp"), null), }; frame.add(ComponentFactory.componentConstructWithComponents( "ROW2", new JPanel(), new FlowLayout(FlowLayout.RIGHT,2,2), new JComponent[] { ComponentFactory.componentConstructWithComponents( "p1", new JPanel(), new GridLayout(4,4,1,1), jButtons) } ) ); JComponent jtext = ComponentFactory.addComponent("TextField",new JTextField(25),null); frame.add( ComponentFactory.componentConstructWithComponents( "ROW3", new JPanel(), new FlowLayout(FlowLayout.CENTER, 5,5), new JComponent[] { jtext }) ); //end constructing display }//end basic constructor public void printAll(String name) { System.out.println(elements.get(name).toString()); System.out.println("Adding clickable"); if ( elements.containsKey("Button2") ) { System.out.println("Has button1 and element"); elements.get("Button2").addActionListener(this); } } public static void main(String[] args) { try { Calculator c= new Calculator(); c.printAll("Button1"); } catch (Exception e) { e.printStackTrace(); } } }
My idea was a custom class hash based that will store my demands, but I just want to know that there is better way.Last edited by heatblazer; 11-30-2012 at 10:58 AM. Reason: bad text
- 11-30-2012, 01:31 PM #2
Re: Help needed for a new comer to Java!
Please go through the Forum Rules -- particularly the third paragraph.
dbWhy do they call it rush hour when nothing moves? - Robin Williams
Similar Threads
-
Help needed with java
By ozzy in forum New To JavaReplies: 11Last Post: 11-01-2009, 10:08 PM -
java help needed
By mayhewj7 in forum New To JavaReplies: 1Last Post: 01-28-2009, 05:33 AM -
Java experts needed- 30 minute online Java projects
By michelle in forum Jobs OfferedReplies: 0Last Post: 03-05-2008, 11:47 PM -
New Comer, Java C# question
By lmei007 in forum Advanced JavaReplies: 0Last Post: 02-04-2008, 04:54 PM -
Java help needed
By jeneal in forum New To JavaReplies: 0Last Post: 11-21-2007, 03:04 AM


LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks