Event handling from class to another
i get toolbarDemo.java which make event handling to JTextArea in the same class
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/index.html#ToolBarDemo
but i have another class and i make object of toolBar class and i move toolBar icons only how can i move the event handling as open ,save,copy,paste to my another class
i want to ignore actionPerformed of toolBar class and listen to my another's class actionPerformed
thanks
Rather than trying to use the ToolBarDemo class as-is you can use/modify the methods in it for your own class, like this:
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;
import javax.swing.text.TextAction;
public class ToolBarIconTest implements ActionListener
static final private String OPEN = "open";
static final private String SAVE = "save";
static final private String COPY = "copy";
static final private String PASTE = "paste";
public void actionPerformed(ActionEvent e)
String cmd = e.getActionCommand();
if (OPEN.equals(cmd))
System.out.println("show a JFileChooser open dialog");
if (SAVE.equals(cmd))
System.out.println("show a JFileChooser save dialog");
private JToolBar getToolBar()
JToolBar toolBar = new JToolBar();
addButtons(toolBar);
return toolBar;
protected void addButtons(JToolBar toolBar) {
JButton button = null;
//first button
button = makeGeneralButton("Open24", OPEN,
"To open a document",
"Open", this);
toolBar.add(button);
//second button
button = makeGeneralButton("Save24", SAVE,
"To save a document",
"Save", this);
toolBar.add(button);
//third button
button = makeGeneralButton("Copy24", COPY,
"Copy from focused text component",
"Copy", copy);
toolBar.add(button);
//fourth button
button = makeGeneralButton("Paste24", PASTE,
"Paste to the focused text component",
"Paste", paste);
toolBar.add(button);
protected JButton makeGeneralButton(String imageName,
String actionCommand,
String toolTipText,
String altText,
ActionListener l) {
//Look for the image.
String imgLocation = "toolbarButtonGraphics/general/"
+ imageName
+ ".gif";
URL imageURL = ToolBarIconTest.class.getResource(imgLocation);
//Create and initialize the button.
JButton button = new JButton();
button.setActionCommand(actionCommand);
button.setToolTipText(toolTipText);
button.addActionListener(l);
if (imageURL != null) { //image found
button.setIcon(new ImageIcon(imageURL, altText));
} else { //no image found
button.setText(altText);
System.err.println("Resource not found: "
+ imgLocation);
return button;
private Action copy = new TextAction(COPY)
public void actionPerformed(ActionEvent e)
JTextComponent tc = getFocusedComponent();
int start = tc.getSelectionStart();
int end = tc.getSelectionEnd();
if(start == end)
tc.selectAll();
tc.copy();
private Action paste = new TextAction(PASTE)
public void actionPerformed(ActionEvent e)
getFocusedComponent().paste();
private JPanel getTextFields()
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JTextField(12), "North");
panel.add(new JTextField(12), "South");
return panel;
public static void main(String[] args)
ToolBarIconTest test = new ToolBarIconTest();
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(test.getToolBar(), "North");
f.getContentPane().add(test.getTextFields());
f.setSize(360,240);
f.setLocation(200,200);
f.setVisible(true);
}Use the -cp option as shown in the ToolBarDemo class comments
C:\jexp>java -cp .;path_to_jar_file/jlfgr-1_0.jar ToolBarIconTest
Similar Messages
-
Raise a button's click event handler from another event handler
hi,
I am trying to raise a button's click event from another button's click event.
Automation gives a runtime error. I checked out some other forums for answers but they dont work when called from another event handler.
Console.WriteLine(gestureData.name);
if (s==b2) ;
//raise button2's click event
private void b2_Click(object sender, RoutedEventArgs e)
MessageBox.Show("I am button2");
private void b3_Click(object sender, RoutedEventArgs e)
MessageBox.Show("I am button3");
Any help will be appreciated.
Thanks,
Shaleen
TheHexLordHi Andy,
I tried to implement your suggestion.
What I am trying to do is, say there is a label whose content property needs to be updated every time a button b1 is clicked. When the button is clicked , it check if a condition is met and depending upon that condition it updates the content of the label
. Say , if the text entered is "add" and the button is clicked and the label's content is set to "add", if the text entered is "sub" and then the button is clicked, the label's content is set to "sub".
I understand that there is no need to fire up different methods for this as this can be done by checking for conditions in the same button click event but it seems that updating the UI is not happening. I get an error saying.:
A first chance exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll
The program '[6660] WpfApplication8.vshost.exe: Program Trace' has exited with code 0 (0x0).
The program '[6660] WpfApplication8.vshost.exe: Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005) 'Access violation'.
this goes away when I remove the Label.Content="add" or Label.Content= "sub";
I think the label's content property does not update dynamically.
Thanks
TheHexLord -
I have a (newbie?) question regarding event handling:
I have a database class which has an update method and invokes a databaseGUI class to display the data:
/// databaseClass instantiated as DatabaseClass dataConn = new DatabaseClass()
public class DatabaseClass {
Public void updateData {
// write values to database
Public void showData {
thisDBGUI = new databaseGUI();
// populate screen with data from database through database GUI class
// add a button to the interface via addUpdateButton method of databaseGUI class
thisDBGUI.addUpdateButton();
/// databaseGUI class
public class databaseGUI extends JFrame implements ActionListener {
public void addUpdateButton() {
buttonPanel = new JPanel();
updateButton = new JButton ("Udpate Record");
updateButton.addActionListener(this);
buttonPanel.add(okUpdate);
public void actionPerformed(ActionEvent e) {
// need to call dataConn.updateData method
}Please forgive the incomplete snippets; everything displays perfectly and the code executes fine EXCEPT I do not know to use the actionPerformed method to execute the updateDatabase method on the dataConn instance. Any help is greatly appreciated!
David EricksonPersonally, I would move the actionlistener into the DatabaseClass.I agree, but I would do it a different way (just due to personal preference):
public class databaseGUI extends JFrame {
public void addUpdateButton(DatabaseClass dbc) {
buttonPanel = new JPanel();
updateButton = new JButton ("Udpate Record");
updateButton.addActionListener(dbc);
buttonPanel.add(okUpdate);
}Then, just pass a reference to "this" when you call databaseGUI's constructor.
I just like this method better because the GUI object is still setting up the entire GUI on its own. Personal preference, no more. -
How to update 1 Event Handler from different SAP systems?
Hi experts.
I created an Event Handler via SAP 4.7 Purchase Order.
I now need to update this same Event Handler with a control parameter from SAP 6.0.
I was surprised to see that when I updated the Purchase Order in 6.0, EM created a new Event Handler!
Guess I'm missing something obvious...
Thanks.
Zenon.Hello Berthold, Steffen,
Yes it's the same PO in 4.7 and 6.0. We implemented (upgraded) the ERP system to 6.0. The Event Handler was orginally created from 4.7, but now we need to update it from 6.0.
So the Event Handler (tracking id, control parms, EE etc) can only be updated from the logical system the Eh was created in (4.7), and I can only send Event Messages (Events) from 6.0. Correct?
Any thought about how to approach this situation and any future upgrades? Maybe I need to write a conversion program...
Thanks.
Zenon. -
Migration from Serial polling to Serial queue with event handler
Hi, I am trying to migrate from classical serial polling communications to serial queue with "event handler" for the buttons pressed by the user. I have placed four while loops, one for the event handler, a second one for serial reading, a third one for serial writing (depending on what button was pressed) and the last one for processing what was read from the serial reading while loop, via a queue.
My attached device reads the signals from 8 sensor ( 4 temperature and another 4 temperature plus humidity in the same sensor ) and send them via serial to Lavbiew.
First of all, only once just after running the LV program, I must turn on my attached device with an ON command plus a carriage return after that the device will respond with the number of sensors plugged to it, disabling the corresponding buttons in the front panel. Then labview must wait until I pressed Acquire Button (event handler) and send a CF command plus what sensors to acquire plus a carriage return, then the device will respond continuously to labview with the sensor readings until I press the stop button (event handler), there is also another button to exit the program, also with event handler.
I am having problems using the event handler and the queues because I am new using these structures, I have looked at the LV examples but there is nothing concrete on using serial with event handler and queue.
Take a look at my VI and you will soon notice what kind of problems I am having, any suggestions will welcome.
Thank's in advance.
Regards.
Attachments:
serial queue.zip 76 KBHi Luisete,
Maybe the problem arise because you are En- and DeQueue in parallel. You do a lot of things in parallel, that is nice if you are sure that one loop doesn't have to wait for another loop. Make sure you don't dequeue before enqueue.
Hope this helps
I never knew that the standard error cluster output could be wired directly to the loop control of a while loop.
First time I see this -
OIM 11gR2 - RoleUser PostProcess Event Handler not triggered
Hi,
I'm trying to create a postprocess event-handler for RoleUser entity so that when a role is assigned (or removed) to a user an UDF is populated with the list of its roles.
I developed my event-handler and registered it following instructions on http://docs.oracle.com/cd/E27559_01/dev.1112/e27150/oper.htm#OMDEV4749 but the event-handler is not triggered.
I've read and tried a lot of things but nothing seems to work.
I use System.out.println() and a Logger in the event-handler methods as well as breakpoints debugging via Eclipse, all this indicates the event-handler is not triggered.
I checked the event-handler is registered by using getEventHandlers(RoleUser,CREATE) method on IAMAppDesignMBean through Enterprise Manager. Result is :
Postprocess,-2147483648,PostProcessingInitiation,/metadata/iam-features-request/event-definition/EventHandlers.xml,true
Postprocess,FIRST,MyHandler,Plugin:MyHandler,false
Postprocess,FIRST,MyHandler,Plugin:MyHandler,false
Postprocess,FIRST,MyHandler,Plugin:MyHandler,false
Postprocess,FIRST,MyHandler,Plugin:MyHandler,false
Postprocess,1020,RoleGrantPostProcessActionHandler,/metadata/iam-features-identity/event-definition/EventHandlers.xml,false
Postprocess,9988,AsyncHandler,/metadata/iam-features-asyncwsclient/EventHandlers.xml,true
Postprocess,3000000,CallBackOAACGWithApprove,/metadata/iam-features-rolesod/EventHandlers.xml,true
Postprocess,2147483647,RequestCompleted,/metadata/iam-features-request/event-definition/EventHandlers.xml,true
Note that I dont understand why the handler appears four times..
Also, when I unregister it, it still appears one time.
Here is my event handler XML file (in META-INF folder of the plugin zip) :
<?xml version='1.0' encoding='utf-8'?>
<eventhandlers
xmlns="http://www.oracle.com/schema/oim/platform/kernel/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernel orchestration-handlers.xsd">
<action-handler
class="package.MyHandler"
entity-type="RoleUser"
operation="ANY"
name="MyHandler"
stage="postprocess"
order="FIRST"
sync="TRUE" />
</eventhandlers>
plugin.xml file (root of plugin zip) :
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin
pluginclass="package.MyHandler"
version="1.0"
name="Myhandler" />
</plugins>
</oimplugins>
Java code (in a JAR in lib folder of plugin zip) :
public class MyHandler implements PostProcessHandler {
@Override
public EventResult execute(long processId, long eventId, Orchestration orchestration) {
System.out.println("Inside EventResult execute ");
LOGGER.log(Level.SEVERE, "Inside eventResult execute");
// Some code
return new EventResult();
@Override
public BulkEventResult execute(long processId, long eventId, BulkOrchestration orchestration) {
String operation = orchestration.getOperation().trim().toString();
System.out.println("<---------- Calling " + getClass().getName() + ": Operation[" + operation + "] Execute ---------->");
LOGGER.log(Level.SEVERE, "Inside BulkEventResult execute");
// Some code
return new BulkEventResult();
Maybe I'm missing something ? Any help would be really appreciated
Thanks,
Gael
EDIT :
Also note that I see these messages in the logs but I'm not sure it concern my event handler from what I read on some pages :
XML schema validation failed for XML eventhandlers and it will not be loaded by kernel.
[CALLBACKMSG] Found 0 possible matches for applicable policies for step POST_PROCESS, entity RoleUser, operation CREATE.
Related link : Post process event handler when a role is created or modified in OIMI eventually got it working but I'm not sure of how.. !
I changed the name of the handler (it was not "MyHandler" but something very long, I shortened it). I copy and paste exactly what was described here : Post process event handler when a role is created or modified in OIM. I did purge cache. I tried to apply it on another entity (Role), it was triggered, then I applied it back to RoleUser and it still works.
If it can help someone, my plugin zip contains :
plugin.xml :
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass="fr.xxx.RoleUserProcessor"
version="1.0" name="RoleUserProcessor" />
</plugins>
</oimplugins>
META-INF/EventHandlers.xml :
<?xml version="1.0" encoding="UTF-8"?>
<eventhandlers xmlns="http://www.oracle.com/schema/oim/platform/kernel"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernel orchestration-handlers.xsd">
<action-handler class="fr.xxx.RoleUserProcessor"
entity-type="RoleUser" operation="ANY" name="RoleUserProcessor" order="9999"
stage="postprocess" sync="TRUE" />
</eventhandlers>
lib/xxx.jar/RoleUserProcessor.java :
@Override
public EventResult execute(long processId, long eventId, Orchestration orchestration) {
LOGGER.log(Level.INFO, "Execution RoleUserProcessor EventHandler (mode non bulk)");
String operation = orchestration.getOperation().trim().toString();
LOGGER.log(Level.INFO, "Operation : " + operation);
return new EventResult();
@Override
public BulkEventResult execute(long processId, long eventId, BulkOrchestration orchestration) {
LOGGER.log(Level.INFO, "Execution RoleUserProcessor EventHandler (mode bulk)");
String operation = orchestration.getOperation().trim().toString();
LOGGER.log(Level.INFO, "Operation : " + operation);
return new BulkEventResult();
Thank you
Also, a thing that may help some people, I found out that the ORCHEVENTS table in OIM schema contains the history of handlers triggered. -
How to call the event handler of other application....?
Hi,
I am working on two applications.
Now i need to call a Event handler from my first application to my second application.
I need a same process in this aaplication also. So i need to call the event handler of that application.
So, Kindly tell me about the process to call the even handler of another application.
Thanks in Advance.
Regards,
Prithivihi,Prithivi..
Unfortunately, as far as i know, i should tell you that : you cann't call the event-hanlder in another Application if the 2 applicaions are run in different IE browser...
If your 2 component are used in the same IE browser, maybe you can make one interface event, and trigger it in one component, then handle the event in the second component(by reimplemented the former)...
However, from your description, i think, you want to trigger the event handler in another application in different IE Browser...
So, very upset..We cann't communicate between the 2 applications, as far as i know...
Best wishes. -
OK, so here's a good question to ask for my first post to this site!
My current "project" is a GUI applet that does real-time interactions on a set of objects and user input. I'm using double buffering, event handling (from the keyboard) and multiple threads to handle the categories of "user input and graphics" and "world state updating." Here is a rough overview of how the program is layed out:
// keyboard input status class
class Keyboard extends KeyListener {
static int[] code = new int[7]; // contains keycodes of interesting keys
static boolean[] status = new boolean[7]; // status of keys (true=pressed)
static boolean getStatus(int key) {
return status[key];
void keyPressed(KeyEvent e) {
for(int i = 6; i >= 0; i--)
if(code[i] == e.code)
status[i] = true;
void keyReleased(KeyEvent e) {
for(int i = 6; i >= 0; i--)
if(code[i] == e.code)
status[i] = false;
// main program applet
class Program extends Applet implements Runnable {
static Thread thread; // main thread of applet
static Image buffer; // double buffer for offscreen rendering
static boolean running; // flag to indicate status of applet
void init() {
buffer = createImage(500, 500);
// other initializations
void destroy() {
// other disposes
void start() {
running = true;
thread = new Thread(this);
thread.start();
addKeyListener(new Keyboard()); // begin receiving input
void stop() {
running = false;
if(thread != Thread.currentThread())
thread.join(); // wait for thread to die before continuing
void run() {
double paintTimer = 0; // timer to suspend painting to buffer until necessary
double dt = 0; // difference in time between loops
while(running) {
// update timing stuff (dt and paintTimer)
// update world status
paintTimer -= dt; // to decrement painting timer
if(paintTimer <= 0) {
paintTimer = 1.0 / fps; // reset paint timer based on current fps setting
synchronized(syncObject) {
// paint world to buffer
repaint();
Thread.yield(); // to yield time to painting and user input thread
// this method is only called by the internal thread within the applet
// that is responsible for painting and event handling
void paint(Graphics g) {
// make sure painting to screen won't conflict with thread that's drawing on buffer!
synchronized(syncObject) {
g.drawImage(buffer, 0, 0, null); // do double buffering...paint buffer to screen
}So the end result is that it works fine some of the time, but every once in awhile I'll get these strange results where it'll seem as if the internal thread that handles graphics and input will get bogged down or stop responding normally, even with the Thread.yield() call from the main applet thread. I'll get results where the world will continue to be updated correctly, but the user input and onscreen rendering freeze in a particular state for a matter of seconds, and then it seems to regain control for a brief few milliseconds (hence I'll get a quick screen refresh and keyboard state change), and then it'll freeze again. Once this starts happening somewhere in the middle of execution, it continues to happen throughout that runtime session. Sometimes when I force-close the appletviewer I'll get weird native runtime exceptions that seem to occur within Sun's keyboard input manager.
Almost always it'll run perfectly for many minutes, and then all of a sudden it'll start to freeze up. Every once in awhile it freezes almost immediately after startup. I've run some testcases on it and am pretty confident it has nothing to do with the synchronization or the fact that I create a new applet thread every time the applet is restarted dynamically. Is it something happening within the event thread of the applet that I'm not aware of? Or is it something wrong with the flow of my code? Thanks for any input or help you can give! I'll be happy to send more details if needed.
Zachright before your repaint, putSystem.out.println("Is EDT? "+SwingUtilities.isEventDispatcherThread());if its printing false, then you need to do SwingUtilities.invokeLater( ... );
and put GUI updating code in the invoke later. -
Hi all,
Flash classes have their own event handlers. For example, the
movie clip class have "onRelease", "onRollout", and etc. Is it
possible for the Flash Developer to create their own events handler
(from ground up) for Flash. Thanks.In #2, Photoshop is opening the file via ACR, so an Open event is generated.
In #3, Bridge calls Photoshop which results in #2.
In #1, the ACR plugin (in Bridge) calls Photoshop to process a rendered version of the (raw) file. There is no real PS Open
event for this kind of thing since it was ACR (running in Bridge) that actually opened the raw file, not PS or ACR in PS. -
Would someone please help me. I am new to applet development and I get a compile error associated with the event handling in my first ever applet code as follows:
C:\j2sdk1.4.2_01\bin>javac trajectory_j.java
trajectory_j.java:248: illegal start of expression
private class Handler implements ActionListener {
^
trajectory_j.java:248: ';' expected
private class Handler implements ActionListener {
^
2 errors
de.
This is the code:
// trajectory Analysis Program: trajectory_j.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class trajectory_j extends JApplet implements ActionListener {
private JTextArea introductionArea, resultsArea;
private JLabel spanLabel, chordLabel,
thicknessLabel, massLabel, altitudeLabel, velocityLabel,
trajectory_angleLabel, time_incrementLabel, rotation_factorLabel,
calculationLabel, resultsLabel;
private JTextField spanField, chordField, thicknessField,
massField, altitudeField, velocityField, trajectory_angleField,
time_incrementField, rotation_factorField;
private JButton startButton, resetButton, contButton, termButton;
String introduction_string, span_string, chord_string, thickness_string, mass_string,
altitude_string, velocity_string, trajectory_angle_string,
time_increment_string, rotation_factor_string, results_string;
double span, chord, thickness, mass, altitude, velocity, trajectory_angle, time_increment,
rotation_factor, distance, velocity_fps, elapsed_time;
int status_a;
int status_b;
int status_c;
/* deletion of code segment a
span = 0;
chord = 0;
thickness = 0;
mass = 0;
altitude = 0;
velocity = 0;
trajectory_angle = 0;
time_increment = 0;
rotation_factor = 0;
distance = 0;
velocity_fps = 0;
elapsed_time = 0;
velocity_fps = 0;
elapsed_time = 0;
// create objects
public void init()
status_a = 0;
status_b = 0;
status_c = 0;
// create container & panel
Container container = getContentPane();
Panel panel = new Panel( new FlowLayout( FlowLayout.LEFT));
container.add( panel );
// set up vertical boxlayout
Box box = Box.createVerticalBox();
Box inputbox1 = Box.createHorizontalBox();
Box inputbox2 = Box.createHorizontalBox();
Box inputbox3 = Box.createHorizontalBox();
Box buttonbox = Box.createHorizontalBox();
introduction_string = "This is the introduction";
// set up introduction
introductionArea = new JTextArea( introduction_string, 10, 50 );
introductionArea.setEditable( false );
box.add( new JScrollPane( introductionArea ) );
box.add( Box.createVerticalStrut (10) );
box.add( inputbox1);
// set up span
spanLabel = new JLabel( "span (feet)" );
spanField = new JTextField(5 );
inputbox1.add( spanLabel );
inputbox1.add( spanField );
Dimension minSize = new Dimension(5, 15);
Dimension prefSize = new Dimension(5, 15);
Dimension maxSize = new Dimension(Short.MAX_VALUE, 15);
inputbox1.add(new Box.Filler(minSize, prefSize, maxSize));
// set up chord
chordLabel = new JLabel( "chord (feet)" );
chordField = new JTextField(5 );
inputbox1.add( chordLabel );
inputbox1.add( chordField );
inputbox1.add(new Box.Filler(minSize, prefSize, maxSize));
// set up thickness
thicknessLabel = new JLabel( "thickness (feet)" );
thicknessField = new JTextField(5 );
inputbox1.add( thicknessLabel );
inputbox1.add( thicknessField );
inputbox1.add(new Box.Filler(minSize, prefSize, maxSize));
// set up mass
massLabel = new JLabel( "mass (slugs)" );
massField = new JTextField(5);
inputbox1.add( massLabel );
inputbox1.add( massField );
box.add( Box.createVerticalStrut (10) );
box.add( inputbox2);
// set up altitude
altitudeLabel = new JLabel( "altitude (feet)");
altitudeField = new JTextField(5 );
inputbox2.add( altitudeLabel );
inputbox2.add( altitudeField );
inputbox2.add(new Box.Filler(minSize, prefSize, maxSize));
// set up velocity
velocityLabel = new JLabel( "velocity (Mach Number)");
velocityField = new JTextField(5);
inputbox2.add( velocityLabel );
inputbox2.add( velocityField );
inputbox2.add(new Box.Filler(minSize, prefSize, maxSize));
// set up trajectory_angle
trajectory_angleLabel = new JLabel( "trajectory angle ( -90 degrees <= trajectory angle <= 90 degrees )");
trajectory_angleField = new JTextField(5);
inputbox2.add( trajectory_angleLabel );
inputbox2.add( trajectory_angleField );
box.add( Box.createVerticalStrut (10) );
box.add( inputbox3);
Dimension minSizeF = new Dimension(70, 15);
Dimension prefSizeF = new Dimension(70, 15);
Dimension maxSizeF = new Dimension(Short.MAX_VALUE, 15);
inputbox3.add(new Box.Filler(minSizeF, prefSizeF, maxSizeF));
// set up time_increment
time_incrementLabel = new JLabel( "time increment (seconds)" );
time_incrementField = new JTextField(5);
inputbox3.add( time_incrementLabel );
inputbox3.add( time_incrementField );
inputbox3.add(new Box.Filler(minSizeF, prefSizeF, maxSizeF));
// set up rotation_factor
rotation_factorLabel = new JLabel( "rotation factor ( non-negative number)" );
rotation_factorField = new JTextField(5);
inputbox3.add( rotation_factorLabel );
inputbox3.add( rotation_factorField );
inputbox3.add(new Box.Filler(minSizeF, prefSizeF, maxSizeF));
box.add( Box.createVerticalStrut (10) );
box.add( buttonbox);
// set up start
startButton = new JButton( "START" );
buttonbox.add( startButton );
Dimension minSizeB = new Dimension(10, 30);
Dimension prefSizeB = new Dimension(10, 30);
Dimension maxSizeB = new Dimension(Short.MAX_VALUE, 30);
buttonbox.add(new Box.Filler(minSizeB, prefSizeB, maxSizeB));
// set up reset
resetButton = new JButton( "RESET" );
buttonbox.add( resetButton );
buttonbox.add(new Box.Filler(minSizeB, prefSizeB, maxSizeB));
// set up cont
contButton = new JButton( "CONTINUE" );
buttonbox.add( contButton );
buttonbox.add(new Box.Filler(minSizeB, prefSizeB, maxSizeB));
// set up term
termButton = new JButton( "END" );
buttonbox.add( termButton );
box.add( Box.createVerticalStrut (10) );
// set up results
resultsArea = new JTextArea( results_string, 10, 50 );
resultsArea.setEditable( false );
box.add( new JScrollPane( resultsArea ) );
// add box to panel
panel.add( box );
// register event handlers
Handler handler = new Handler();
spanField.addActionListener( handler );
chordField.addActionListener( handler );
thicknessField.addActionListener( handler );
massField.addActionListener( handler );
altitudeField.addActionListener( handler );
velocityField.addActionListener( handler );
trajectory_angleField.addActionListener( handler );
time_incrementField.addActionListener( handler );
rotation_factorField.addActionListener( handler );
startButton.addActionListener( handler );
resetButton.addActionListener( handler );
contButton.addActionListener( handler );
termButton.addActionListener( handler );
// private inner class for event handling
private class Handler implements ActionListener {
// process handler events
public void actionPerformed( ActionEvent event )
// process resetButton event
if ( event.getSource() == resetButton )
reset();
// process contButton event
if ( event.getSource() == contButton )
cont();
// process endButton event
if ( event.getSource() == termButton )
// process span event
if( event.getSource() == spanField ) {
span = Double.parseDouble( event.getActionCommand() );
spanField.setText( span_string );
status_b++;
// process chord event
if( event.getSource() == spanField ) {
span = Double.parseDouble( event.getActionCommand() );
spanField.setText( chord_string );
status_b++;
// process thickness event
if( event.getSource() == thicknessField ) {
thickness = Double.parseDouble( event.getActionCommand() );
spanField.setText( thickness_string );
status_b++;
// process mass event
if( event.getSource() == massField ) {
mass = Double.parseDouble( event.getActionCommand() );
spanField.setText( mass_string );
status_b++;
// process altitude event
if( event.getSource() == altitudeField ) {
altitude = Double.parseDouble( event.getActionCommand() );
spanField.setText( altitude_string );
status_b++;
// process velocity event
if( event.getSource() == velocityField ) {
velocity = Double.parseDouble( event.getActionCommand() );
spanField.setText( velocity_string );
status_b++;
// process trajectory_angle event
if( event.getSource() == trajectory_angleField ) {
trajectory_angle = Double.parseDouble( event.getActionCommand() );
spanField.setText( trajectory_angle_string );
status_b++;
// process time_increment event
if( event.getSource() == time_incrementField ) {
time_increment = Double.parseDouble( event.getActionCommand() );
spanField.setText( time_increment_string );
status_b++;
// process rotation_factor event
if( event.getSource() == rotation_factorField ) {
rotation_factor = Double.parseDouble( event.getActionCommand() );
spanField.setText( rotation_factor_string );
status_b++;
// process startButton event
if ( event.getSource() == startButton && status_b == 9 ) {
status_c = 1;
} // end method event handler
} // end Handler class
} // end method init
public void strtb()
/* deletion of code segment 1
startButton.addActionListener(
new ActionListener() { // anonymous inner class
// set text in resultsArea
public void actionPerformed( ActionEvent event )
if( status_c == 1 ){
calculate();
results();
resultsArea.setText( results() );
/* deletion of code segment 2
}// end method actionPerformed1
} // end anonymous inner class1
); // end call to addActionlistener1
} // end method strtb
public void reset()
/* deletion of code segment 3
resetButton.addActionListener(
new ActionListener() { // anonymous inner class
// set text in resultsArea
public void actionPerformed( ActionEvent event )
span_string = "";
chord_string = "";
thickness_string = "";
mass_string = "";
altitude_string = "";
velocity_string = "";
trajectory_angle_string = "";
time_increment_string = "";
rotation_factor_string = "";
results_string = "";
spanField.setText( span_string );
chordField.setText( chord_string );
thicknessField.setText( thickness_string );
massField.setText( mass_string );
altitudeField.setText( altitude_string );
velocityField.setText( velocity_string );
trajectory_angleField.setText( trajectory_angle_string );
time_incrementField.setText( time_increment_string );
rotation_factorField.setText( rotation_factor_string );
resultsArea.setEditable( true );
resultsArea.setText( results_string );
resultsArea.setEditable( false );
span = 0;
chord = 0;
thickness = 0;
mass = 0;
altitude = 0;
velocity = 0;
trajectory_angle = 0;
time_increment = 0;
rotation_factor = 0;
distance = 0;
velocity_fps = 0;
elapsed_time = 0;
/* deletion of code segment 4
} // end method actionPerformed2
} // end anonymous inner class2
); // end call to addActionlistener2
} // end method reset
public void cont()
//later
public void calculate()
distance = 1;
altitude = 2;
trajectory_angle = 3;
velocity_fps = 4;
elapsed_time = 5;
public String results()
results_string =
"Distance =\t\t" + distance + " miles\n"
+ "Altitude =\t\t" + altitude + " feet\n"
+ "Trajectory Angle =\t" + trajectory_angle + " degrees\n"
+ "Velocity =\t\t" + velocity_fps + " feet per second\n"
+ "Elapsed Time =\t\t" + elapsed_time + " seconds\n"
+ "\nstatus_a = " + status_a + "\nstatus_b = "
+ status_b + "\nstatus_c = " + status_c;
return results_string;
public void start()
if(status_a == 0 )
strtb();
if (status_b == 0)
reset();
}// end method start
} //end class trajectory_aThe following are copies of html and java source code files for a prior runnable version ( trajectory_b ) of this program which can enlighten some functionality intended by the program.
(trajectory_b.html):
<html>
<appletcode = "trajectory_b.class" width = "800" height = "600">
</applet>
</html>
(trajectory_b.java):
// trajectory Analysis Program: trajectory_b.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class trajectory_b extends JApplet implements ActionListener {
private JTextArea introductionArea, resultsArea;
private JLabel spanLabel, chordLabel,
thicknessLabel, massLabel, altitudeLabel, velocityLabel,
trajectory_angleLabel, time_incrementLabel, rotation_factorLabel,
calculationLabel, resultsLabel;
private JTextField spanField, chordField, thicknessField,
massField, altitudeField, velocityField, trajectory_angleField,
time_incrementField, rotation_factorField;
private JButton startButton, resetButton, contButton, termButton;
String introduction_string, span_string, chord_string, thickness_string, mass_string,
altitude_string, velocity_string, trajectory_angle_string,
time_increment_string, rotation_factor_string, results_string;
double span, chord, thickness, mass, altitude, velocity, trajectory_angle, time_increment,
rotation_factor, distance, velocity_fps, elapsed_time;
int status_a;
int status_b;
int status_c;
/* deletion of code segment a
span = 0;
chord = 0;
thickness = 0;
mass = 0;
altitude = 0;
velocity = 0;
trajectory_angle = 0;
time_increment = 0;
rotation_factor = 0;
distance = 0;
velocity_fps = 0;
elapsed_time = 0;
velocity_fps = 0;
elapsed_time = 0;
// create objects
public void init()
status_a = 0;
status_b = 0;
status_c = 0;
// create container & panel
Container container = getContentPane();
Panel panel = new Panel( new FlowLayout( FlowLayout.LEFT));
container.add( panel );
// set up vertical boxlayout
Box box = Box.createVerticalBox();
Box inputbox1 = Box.createHorizontalBox();
Box inputbox2 = Box.createHorizontalBox();
Box inputbox3 = Box.createHorizontalBox();
Box buttonbox = Box.createHorizontalBox();
introduction_string = "This is the introduction";
// set up introduction
introductionArea = new JTextArea( introduction_string, 10, 50 );
introductionArea.setEditable( false );
box.add( new JScrollPane( introductionArea ) );
box.add( Box.createVerticalStrut (10) );
box.add( inputbox1);
// set up span
spanLabel = new JLabel( "span (feet)" );
spanField = new JTextField(5 );
inputbox1.add( spanLabel );
inputbox1.add( spanField );
Dimension minSize = new Dimension(5, 15);
Dimension prefSize = new Dimension(5, 15);
Dimension maxSize = new Dimension(Short.MAX_VALUE, 15);
inputbox1.add(new Box.Filler(minSize, prefSize, maxSize));
// set up chord
chordLabel = new JLabel( "chord (feet)" );
chordField = new JTextField(5 );
inputbox1.add( chordLabel );
inputbox1.add( chordField );
inputbox1.add(new Box.Filler(minSize, prefSize, maxSize));
// set up thickness
thicknessLabel = new JLabel( "thickness (feet)" );
thicknessField = new JTextField(5 );
inputbox1.add( thicknessLabel );
inputbox1.add( thicknessField );
inputbox1.add(new Box.Filler(minSize, prefSize, maxSize));
// set up mass
massLabel = new JLabel( "mass (slugs)" );
massField = new JTextField(5);
inputbox1.add( massLabel );
inputbox1.add( massField );
box.add( Box.createVerticalStrut (10) );
box.add( inputbox2);
// set up altitude
altitudeLabel = new JLabel( "altitude (feet)");
altitudeField = new JTextField(5 );
inputbox2.add( altitudeLabel );
inputbox2.add( altitudeField );
inputbox2.add(new Box.Filler(minSize, prefSize, maxSize));
// set up velocity
velocityLabel = new JLabel( "velocity (Mach Number)");
velocityField = new JTextField(5);
inputbox2.add( velocityLabel );
inputbox2.add( velocityField );
inputbox2.add(new Box.Filler(minSize, prefSize, maxSize));
// set up trajectory_angle
trajectory_angleLabel = new JLabel( "trajectory angle ( -90 degrees <= trajectory angle <= 90 degrees )");
trajectory_angleField = new JTextField(5);
inputbox2.add( trajectory_angleLabel );
inputbox2.add( trajectory_angleField );
box.add( Box.createVerticalStrut (10) );
box.add( inputbox3);
Dimension minSizeF = new Dimension(70, 15);
Dimension prefSizeF = new Dimension(70, 15);
Dimension maxSizeF = new Dimension(Short.MAX_VALUE, 15);
inputbox3.add(new Box.Filler(minSizeF, prefSizeF, maxSizeF));
// set up time_increment
time_incrementLabel = new JLabel( "time increment (seconds)" );
time_incrementField = new JTextField(5);
inputbox3.add( time_incrementLabel );
inputbox3.add( time_incrementField );
inputbox3.add(new Box.Filler(minSizeF, prefSizeF, maxSizeF));
// set up rotation_factor
rotation_factorLabel = new JLabel( "rotation factor ( non-negative number)" );
rotation_factorField = new JTextField(5);
inputbox3.add( rotation_factorLabel );
inputbox3.add( rotation_factorField );
inputbox3.add(new Box.Filler(minSizeF, prefSizeF, maxSizeF));
box.add( Box.createVerticalStrut (10) );
box.add( buttonbox);
// set up start
startButton = new JButton( "START" );
buttonbox.add( startButton );
Dimension minSizeB = new Dimension(10, 30);
Dimension prefSizeB = new Dimension(10, 30);
Dimension maxSizeB = new Dimension(Short.MAX_VALUE, 30);
buttonbox.add(new Box.Filler(minSizeB, prefSizeB, maxSizeB));
// set up reset
resetButton = new JButton( "RESET" );
buttonbox.add( resetButton );
buttonbox.add(new Box.Filler(minSizeB, prefSizeB, maxSizeB));
// set up cont
contButton = new JButton( "CONTINUE" );
buttonbox.add( contButton );
buttonbox.add(new Box.Filler(minSizeB, prefSizeB, maxSizeB));
// set up term
termButton = new JButton( "END" );
buttonbox.add( termButton );
box.add( Box.createVerticalStrut (10) );
// set up results
resultsArea = new JTextArea( results_string, 10, 50 );
resultsArea.setEditable( false );
box.add( new JScrollPane( resultsArea ) );
// add box to panel
panel.add( box );
// register event handlers
Handler handler = new Handler();
spanField.addActionListener( handler );
chordField.addActionListener( handler );
thicknessField.addActionListener( handler );
massField.addActionListener( handler );
altitudeField.addActionListener( handler );
velocityField.addActionListener( handler );
trajectory_angleField.addActionListener( handler );
time_incrementField.addActionListener( handler );
rotation_factorField.addActionListener( handler );
startButton.addActionListener( handler );
resetButton.addActionListener( handler );
contButton.addActionListener( handler );
termButton.addActionListener( handler );
} // end method init
// process handler events
public void actionPerformed( ActionEvent event )
// process resetButton event
if ( event.getSource() == resetButton )
reset();
// process contButton event
if ( event.getSource() == contButton )
cont();
// process endButton event
if ( event.getSource() == termButton )
// process span event
if( event.getSource() == spanField ) {
span = Double.parseDouble( event.getActionCommand() );
spanField.setText( span_string );
status_b++;
// process chord event
if( event.getSource() == spanField ) {
span = Double.parseDouble( event.getActionCommand() );
spanField.setText( chord_string );
status_b++;
// process thickness event
if( event.getSource() == thicknessField ) {
thickness = Double.parseDouble( event.getActionCommand() );
spanField.setText( thickness_string );
status_b++;
// process mass event
if( event.getSource() == massField ) {
mass = Double.parseDouble( event.getActionCommand() );
spanField.setText( mass_string );
status_b++;
// process altitude event
if( event.getSource() == altitudeField ) {
altitude = Double.parseDouble( event.getActionCommand() );
spanField.setText( altitude_string );
status_b++;
// process velocity event
if( event.getSource() == velocityField ) {
velocity = Double.parseDouble( event.getActionCommand() );
spanField.setText( velocity_string );
status_b++;
// process trajectory_angle event
if( event.getSource() == trajectory_angleField ) {
trajectory_angle = Double.parseDouble( event.getActionCommand() );
spanField.setText( trajectory_angle_string );
status_b++;
// process time_increment event
if( event.getSource() == time_incrementField ) {
time_increment = Double.parseDouble( event.getActionCommand() );
spanField.setText( time_increment_string );
status_b++;
// process rotation_factor event
if( event.getSource() == rotation_factorField ) {
rotation_factor = Double.parseDouble( event.getActionCommand() );
spanField.setText( rotation_factor_string );
status_b++;
// process startButton event
if ( event.getSource() == startButton && status_b == 9 ) {
strtb();
} // end method event handler
public void strtb()
startButton.addActionListener(
new ActionListener() { // anonymous inner class
// set text in resultsArea
public void actionPerformed( ActionEvent event )
calculate();
results();
resultsArea.setText( results() );
}// end method actionPerformed1
} // end anonymous inner class1
); // end call to addActionlistener1
} // end method strtb
public void reset()
resetButton.addActionListener(
new ActionListener() { // anonymous inner class
// set text in resultsArea
public void actionPerformed( ActionEvent event )
span_string = "";
chord_string = "";
thickness_string = "";
mass_string = "";
altitude_string = "";
velocity_string = "";
trajectory_angle_string = "";
time_increment_string = "";
rotation_factor_string = "";
results_string = "";
spanField.setText( span_string );
chordField.setText( chord_string );
thicknessField.setText( thickness_string );
massField.setText( mass_string );
altitudeField.setText( altitude_string );
velocityField.setText( velocity_string );
trajectory_angleField.setText( trajectory_angle_string );
time_incrementField.setText( time_increment_string );
rotation_factorField.setText( rotation_factor_string );
resultsArea.setEditable( true );
resultsArea.setText( results_string );
resultsArea.setEditable( false );
span = 0;
chord = 0;
thickness = 0;
mass = 0;
altitude = 0;
velocity = 0;
trajectory_angle = 0;
time_increment = 0;
rotation_factor = 0;
distance = 0;
velocity_fps = 0;
elapsed_time = 0;
} // end method actionPerformed2
} // end anonymous inner class2
); // end call to addActionlistener2
} // end method reset
public void cont()
//later
public void calculate()
distance = 1;
altitude = 2;
trajectory_angle = 3;
velocity_fps = 4;
elapsed_time = 5;
public String results()
results_string =
"Distance =\t\t" + distance + " miles\n"
+ "Altitude =\t\t" + altitude + " feet\n"
+ "Trajectory Angle =\t" + trajectory_angle + " degrees\n"
+ "Velocity =\t\t" + velocity_fps + " feet per second\n"
+ "Elapsed Time =\t\t" + elapsed_time + " seconds\n"
+ "\nstatus_a = " + status_a + "\nstatus_b = "
+ status_b + "\nstatus_c = " + status_c;
return results_string;
public void start()
if(status_a == 0 )
strtb();
if (status_b == 0)
reset();
}// end method start
} //end class trajectory_b -
Passing parameters to an event handler
I am successfully using event handlers to respond to user
inputs(mouse click, enter key, etc.)
The handler can also use the event objects parameters to
perform operations based on who called the function. An example of
this is the target._name, which is apparently passed when the event
occurs.
In addition, I have a need to call an event handler from
within AS to essentially mimic a mouse click or keyboard entry.
This call from AS is no problem. Just use the event handler
name. For instance, mc.click(); and the handler is invoked.
However, with the AS call there is no object passed to the
handler. This differs from an event-driven call where an object
identifying the event source is passed to the handler.
The question is: Can you pass a parameter(s) or object to an
event handler from a call in ActionScript? I have tried various
ways, but nothing has worked.
Does anyone know the insides of event handling and how the
"eventObject" is passed when
a user event occurs? Knowing how that works might give some
clues as to how to pass an object from an AS call.You would need to use a modified version of the
mx.utils.Delegate package. The link below has just that;
http://www.person13.com/articles/proxy/Proxy.htm -
Fire event from one class to another.
I have a Login JFrame class that allows users to enter username and password. I then have another JFrame class which will monitor when someone logs in. I am trying to get the username and password to appear on the monitor login frame text area when the user presses enter on the login frame.
I can get it ot work by passing the Monitor class into the Login classes constructor but I want to be able to open the classes separately.When I try to open separatley at present I get java.lang.NullPointerException
at project.LoginGUI.actionPerformed(LoginGUI.java:70) which is referring to the following code:
if(listen.equals("OK")){
GymMonitor.username.setText(username.getText());
Both classes are in the same package. What I want to know is how to fire an event from one class to another? when the class you are firing to is constructed separately.
I hope this question is not too verbose.
ThanksGenerally for something like this you would use a listener.
Your login window is its own entity--it has a user interface, and it gets some information which someone else could ask it for. It could even generate its own events, such as when the user presses "OK". You would first define an interface for anyone who wants to know when someone logs in:
public interface ILoginListener extends java.util.EventListener
public void login(LoginEvent event);
}You would then define the LoginEvent class to contain information like what the user entered for username and password. You could give your login dialog a couple of methods:
private Vector myListeners = new Vector();
public void addLoginListener(ILoginListener listener) {
myListeners.add(listener);
public void removeLoginListener(ILoginListener listener) {
myListeners.remove(listener);
protected void fireLogin(LoginEvent event) {
for (Iterator it = myListeners.iterator(); it.hasNext(); ) {
ILoginListener listener = (ILoginListener)it.next();
listener.login(event);
}You'd have your login dialog call fireLogin every time the user logged in.
Then, you could implement ILoginListener in your monitor window:
public void login(LoginEvent event) {
// now do something with the event you just got.
}All the code I put in here is really generic stuff. You'll write this kind of stuff hundreds of times probably during your career. I haven't tested it though.
Hope this helps. :) -
Swing: when trying to get the values from a JTable inside an event handler
Hi,
I am trying to write a graphical interface to compute the Gauss Elimination procedure for solving linear systems. The class for computing the output of a linear system already works fine on console mode, but I am fighting a little bit to make it work with Swing.
I put two buttons (plus labels) and a JTextField . The buttons have the following role:
One of them gets the value from the JTextField and it will be used to the system dimension. The other should compute the solution. I also added a JTable so that the user can type the values in the screen.
So whenever the user hits the button Dimensiona the program should retrieve the values from the table cells and pass them to a 2D Array. However, the program throws a NullPointerException when I try to
do it. I have put the code for copying this Matrix inside a method and I call it from the inner class event handler.
I would thank you very much for the help.
Daniel V. Gomes
here goes the code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import AdvanceMath.*;
public class MathF2 extends JFrame {
private JTextField ArrayOfFields[];
private JTextField DimOfSis;
private JButton Calcular;
private JButton Ativar;
private JLabel label1;
private JLabel label2;
private Container container;
private int value;
private JTable DataTable;
private double[][] A;
private double[] B;
private boolean dimensionado = false;
private boolean podecalc = false;
public MathF2 (){
super("Math Calcs");
Container container = getContentPane();
container.setLayout( new FlowLayout(FlowLayout.CENTER) );
Calcular = new JButton("Resolver");
Calcular.setEnabled(false);
Ativar = new JButton("Dimensionar");
label1 = new JLabel("Clique no bot�o para resolver o sistema.");
label2 = new JLabel("Qual a ordem do sistema?");
DimOfSis = new JTextField(4);
DimOfSis.setText("0");
JTable DataTable = new JTable(10,10);
container.add(label2);
container.add(DimOfSis);
container.add(Ativar);
container.add(label1);
container.add(Calcular);
container.add(DataTable);
for ( int i = 0; i < 10 ; i ++ ){
for ( int j = 0 ; j < 10 ; j++) {
DataTable.setValueAt("0",i,j);
myHandler handler = new myHandler();
Calcular.addActionListener(handler);
Ativar.addActionListener(handler);
setSize( 500 , 500 );
setVisible( true );
public static void main ( String args[] ){
MathF2 application = new MathF2();
application.addWindowListener(
new WindowAdapter(){
public void windowClosing (WindowEvent event)
System.exit( 0 );
private class myHandler implements ActionListener {
public void actionPerformed ( ActionEvent event ){
if ( event.getSource()== Calcular ) {
if ( event.getSource()== Ativar ) {
//dimensiona a Matriz A
if (dimensionado == false) {
if (DimOfSis.getText()=="0") {
value = 2;
} else {
value = Integer.parseInt(DimOfSis.getText());
dimensionado = true;
Ativar.setEnabled(false);
System.out.println(value);
} else {
Ativar.setEnabled(false);
Calcular.setEnabled(true);
podecalc = true;
try {
InitValores( DataTable, value );
} catch (Exception e) {
System.out.println("Erro ao criar matriz" + e );
private class myHandler2 implements ItemListener {
public void itemStateChanged( ItemEvent event ){
private void InitValores( JTable table, int n ) {
A = new double[n][n];
B = new double[n];
javax.swing.table.TableModel model = table.getModel();
for ( int i = 0 ; i < n ; i++ ){
for (int j = 0 ; j < n ; j++ ){
Object temp1 = model.getValueAt(i,j);
String temp2 = String.valueOf(temp1);
A[i][j] = Double.parseDouble(temp2);What I did is set up a :
// This code will setup a listener for the table to handle a selection
players.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel rowSM = players.getSelectionModel();
rowSM.addListSelectionListener(new Delete_Player_row_Selection(this));
//Class will take the event and call a method inside the Delete_Player object.
class Delete_Player_row_Selection
implements javax.swing.event.ListSelectionListener
Delete_Player adaptee;
Delete_Player_row_Selection (Delete_Player temp)
adaptee = temp;
public void valueChanged (ListSelectionEvent listSelectionEvent)
adaptee.row_Selection(listSelectionEvent);
in the row_Selection function
if(ex.getValueIsAdjusting()) //To remove double selection
return;
ListSelectionModel lsm = (ListSelectionModel) ex.getSource();
if(lsm.isSelectionEmpty())
System.out.println("EMtpy");
else
int selected_row = lsm.getMinSelectionIndex();
ResultSetTableModel model = (ResultSetTableModel) players.getModel();
String name = (String) model.getValueAt(selected_row, 1);
Integer id = (Integer) model.getValueAt(selected_row, 3);
This is how I got info out of a table when the user selected it -
How to run a dialog's method from a button's event handler?
I've created my first dialog from the samples, but I am having trouble figuring out how to run a method in my dialog from an button's event handler. Can anyone please point me in the right direction?
function CreateDialog()
this.windowRef = null;
CreateDialog.prototype.run = function()
//...declare a bunch of vars
// Create a window of type palette.
var win = new Window("dialog", "Element Spray Generator",[iTop,iLeft,iTop + iWidth,iLeft + iHeight] ); // bounds = [left, top, right, bottom]
this.windowRef = win;
// Add a frame for the contents.
win.btnPanel = win.add("panel", [iPadding,iPadding,iWidth-iPadding,iHeight-iPadding], "");
.... add a bunch of other stuff ...
win.btnAdd = win.btnPanel.add("button", [win.btnRemove.bounds.left - iPadding - iButtonWidth,win.lstImages.bounds.bottom + iSmPadding,win.btnRemove.bounds.left - iPadding,win.lstImages.bounds.bottom + iSmPadding +iTextHeight], "Add");
win.btnAdd.onClick = function() {
//todo implement this
var f = File.openDialog("Open File") ;
win.lstImages.add("item", f.displayName );
this.EnableControls(); //<--- problem is on this line here!!
this.EnableControls(); //<--- this works
// Display the window
win.show();
return true;
CreateDialog.prototype.EnableControls = function (){
var result = true;
result = result && (this.windowRef.ddlPaths.selection != "");
result = result && (this.windowRef.lstImages.items.length > 0);
this.windowRef.btnOK.enabled = result;This may not be the reason, but when using the way I create dialogs 'this' inside of an onClick points to the control.
win.btnAdd.onClick = function() {
//todo implement this
var f = File.openDialog("Open File") ;
win.lstImages.add("item", f.displayName );
this.EnableControls(); //<--- I would expect it to call another function of btnAdd
// this.parent.EnableControls() might be what you want if the control is not in some other container -
How to Call Event Handler Method in Another view
Hi Experts,
Can anybody tell me how to call Event handler Method which is declared in View A ,it Should be Called in
view B,Thanks in Advance.
Thanks & Regards
Santhoshhi,
1) You can make the method EH_ONSELECT as public and static and call this method in viewGS_CM/ADDDOC using syntax
impl class name of view GS_CM/DOCTREE=>EH_ONSELECT "method name.
or
2)The view GS_CM/ADDDOC which contains EH_ONSELECT method has been already enhanced, so I can't execute such kind of operation one more time.
or
3)If both views or viewarea containing that view are under same window , then you can get the instance ofGS_CM/DOCTREE from view GS_CM/ADDDOC through the main window controller.
lr_window = me->view_manager->get_window_controller( ).
lv_viewname = 'GS_CM/DOCTREE '.
lr_viewctrl ?= lr_window ->get_subcontroller_by_viewname( lv_viewname ).
Now you can access the method of view GS_CM/DOCTREE .
Let me know in case you face any issues.
Message was edited by: Laure Cetin
Please do not ask for points, this is against the Rules of Engagement: http://scn.sap.com/docs/DOC-18590
Maybe you are looking for
-
Linking a class to a dynamic text field to load XML data.
Hi, I'm quite new to ActionScript and would be grateful for any help here. I want to load text into a dynamic text field (called 'about_tab') using a class depending on the language selected (by clicking on a flag icon) by the user. I managed to ge
-
ICal suddenly not syncing with iPod Touch
Up until I downloaded 2.0 for the iPod touch I haven't had any problems syncing iCal with my iPod touch. Now, nothing appears to be going back and forth. I have restored the software on my touch a couple of times; once I even had it restore the touch
-
ABAP: Get super container of DROP_DOWN_BY_KEY
Hello, I have some dynamic behavior on the screen that I am working on: Transparent containers generated dynamically. Each of newly generated containers has a DROP_DOWN_BY_KEY. When a user selects an item from that DROP_DOWN_BY_KEY I need to get refe
-
Dreamweaver suddenly not loading jquery files
I've been working on customizing a website and everything was working absolutely perfectly. All the jquery files were being loaded and all the effects were working as they should. I purchased a template that already had all the jquery.js files proper
-
Shopping cart's One step approval workflow activation
Hi Gurus, Please reply me for, how to create a shopping cart with One step approval workflow activation? regards, George.