Component position on screen
Hi all
Maybe it's too easy problem, but I would appreciate if someone help me. How can I obtain the java.swing.JComponent's position on screen?
The methods getX() and getY() always returns 0.
Many thanks
Components don't have a location until the GUI is actually visible. The getX and getY methods would return the location relative to the parent.
Similar Messages
-
Why do I get Illegal Component position when I say FlowLayout.CENTER
The code runs fine if you replace the line
Jp7.add(submitButton, FlowLayout.CENTER);
with
Jp7.add(submitButton);
I know FlowLayout's default location is CENTER. But when I explicitly say to center the button, it crashes during runtime but compiles fine.
Whats the reason for this? Is this a bug?
I am using 1.4.0_03.
I getthe following error.
Exception in thread "main" java.lang.IllegalArgumentException: illegal component
position
at java.awt.Container.addImpl(Container.java:568)
at java.awt.Container.add(Container.java:327)
at Mon2.main(Mon2.java:114)
ALSO CAN I DO THE SAME WITHOUT USING SO MANY JPANELS?????????????????? I AM NOT NEW TO PROGRAMMING BUT I AM NEW TO GUI PROGRAMMING.
Thanks in advance.
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Mon2 extends JFrame{
static long i =0;
static int jobid = 0;
static String StartTime = "";
static String LastReport = "";
static String FinishTime = "";
static String Description = "";
static String job_position = "";
static String desc ="";
public static String database = "";
public static String user = "";
public static String password = "";
static int counter = 1;
static boolean valuesEntered = false;
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
BorderLayout borderLayout1 = new BorderLayout();
JLabel jLabel1 = new JLabel();
JTextPane jTextArea1 = new JTextPane();
static JTextField userArea = new JTextField();
static JPasswordField passArea = new JPasswordField();
static JTextField databaseArea = new JTextField();
static JFrame f = new JFrame();
static JLabel us = new JLabel ("UserName: ");
static JLabel pa = new JLabel ("Password: ");
static JLabel da = new JLabel ("Database: ");
BorderLayout borderLayout2 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JLabel jLabel2 = new JLabel();
public Mon2() {
try {
jbInit();
catch (Exception e) {
e.printStackTrace();
public static void main(String args[]) {
System.out.println("Starting Mon2...");
f.setSize(300,200);
f.setTitle("Login");
f.setLocation(250,250);
f.setResizable(false);
Panel Jp1 = new Panel (new BorderLayout());
Panel Jp3 = new Panel (new BorderLayout());
Jp3.add(us, BorderLayout.NORTH);
Jp3.add(pa, BorderLayout.CENTER);
Jp3.add(da, BorderLayout.SOUTH);
userArea.setEditable(true);
userArea.setSize(20,20);
passArea.setEditable(true);
databaseArea.setEditable(true);
JButton submitButton = new JButton("Submit");
JPanel Jp2 = new JPanel (new BorderLayout());
JPanel Jp4 = new JPanel (new FlowLayout());
userArea.setPreferredSize(new Dimension(200,21));
Jp4.add(userArea, FlowLayout.LEFT);
Jp4.add(us, FlowLayout.LEFT);
JPanel Jp5 = new JPanel (new FlowLayout());
passArea.setPreferredSize(new Dimension(200,21));
Jp5.add(passArea,FlowLayout.LEFT);
Jp5.add(pa, FlowLayout.LEFT);
JPanel Jp6 = new JPanel (new FlowLayout());
databaseArea.setPreferredSize(new Dimension(200,21));
databaseArea.setText("DWPROD");
Jp6.add(databaseArea,FlowLayout.LEFT);
Jp6.add(da, FlowLayout.LEFT);
Jp1.add(Jp4, BorderLayout.NORTH);
Jp1.add(Jp5, BorderLayout.CENTER);
Jp2.add(Jp6, BorderLayout.NORTH);
JPanel Jp7 = new JPanel(new FlowLayout());
///////////////////////////This is the line//////////////////
//If you remove the ,FlowLayout.CENTER it works fine.
//If you leave it like as it is, it will compile but then give runtime error
Jp7.add(submitButton, FlowLayout.CENTER);
Jp2.add(Jp7, BorderLayout.SOUTH);
Jp1.add(Jp2, BorderLayout.SOUTH);
f.getContentPane().add(Jp1);
Image img = Toolkit.getDefaultToolkit().getImage("c:\\appletHeader.gif");
f.setIconImage(img);
f.setDefaultCloseOperation(3);
f.setVisible(true);
f.pack();
submitButton.resize(75, 30);
submitButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
user = userArea.getText();
password = passArea.getText();
database = databaseArea.getText();
if((user.equals(null) || password.equals(null) || database.equals(null) || user.equals("") || password.equals("") || database.equals(""))){
valuesEntered = false;
else{
valuesEntered = true;
if(valuesEntered == true){
f.setVisible(false);
Mon2 mainFrame = new Mon2();
mainFrame.setSize(600, 400);
mainFrame.setTitle("Monitor");
mainFrame.setLocation(100,200);
mainFrame.setResizable(false);
desc = "ERROR! or there are no locked jobs.";
mainFrame.setVisible(true);
else{
JOptionPane.showMessageDialog(null,"Must enter values for UserName, Password and Database", "Value Required",JOptionPane.INFORMATION_MESSAGE);
// System.exit(0);
private void jbInit() throws Exception {
this.setDefaultCloseOperation(3);
jButton1.setText("Refresh");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
jButton2.setText(" Exit ");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
this.getContentPane().setLayout(borderLayout1);
jButton3.setText("Clear");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jTextArea1.setText("Click on Refresh to update screen.");
Panel p = new Panel(new FlowLayout());
Panel p2 = new Panel (new BorderLayout());
jLabel1.setText("Monitor for current Job");
jTextArea1.setPreferredSize(new Dimension(8, 50));
jTextArea1.setContentType("text/html");
jTextArea1.setText("");
jTextArea1.setEditable(false);
f.setResizable(false);
f.setTitle("Login");
jLabel2.setHorizontalTextPosition(SwingConstants.LEFT);
jLabel2.setText("jLabel2");
jLabel2.setHorizontalAlignment(SwingConstants.LEFT);
f.getContentPane().setLayout(borderLayout2);
jTextArea1.setSize(100,10);
p.add(jButton1);
p.add(jButton3);
p.add(jButton2);
this.getContentPane().add(jLabel1, BorderLayout.NORTH);
this.getContentPane().add(jTextArea1, BorderLayout.CENTER);
p2.add(p, BorderLayout.CENTER);
this.getContentPane().add(p2, BorderLayout.SOUTH);
pack();
f.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jLabel2, null);
void jButton1_actionPerformed(ActionEvent e){
jTextArea1.setText("Refreshing...");
long i = 0;
try{
jTextArea1.setText("In side try block");
Thread.sleep(1000);
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
jTextArea1.setText("DriverManager");
Connection conn=
DriverManager.getConnection("jdbc:oracle:thin:@machine:1234:"+ database, user, password);
jTextArea1.setText("Got COnnection");
Statement stmt = conn.createStatement();
jTextArea1.setText("Statement Created");
ResultSet rs =
stmt.executeQuery("select 1, sysdate, sysdate, sysdate, sysdate, sysdate from dual ");
jTextArea1.setText("Query Executed");
while(rs.next()){
jobid = rs.getInt(1);
StartTime = rs.getString(2);
LastReport = rs.getString(3);
FinishTime = rs.getString(4);
Description = rs.getString(5);
job_position = rs.getString(6);
desc = "<b>Count: </b>" + counter + "" +
"<p><table border = '1'><tr><td><b>JOB ID: </b></td><td>" + jobid + "</td></tr>" +
"<tr><td><b>Start Time: </b></td><td>" + StartTime + "</td></tr>" +
"<tr><td><b>Last Report: </b></td><td>" + LastReport + "</td></tr>" +
"<tr><td><b>FinishTime: </b></td><td>" + FinishTime + "</td></tr>" +
"<tr><td><b>Description: </b></td><td>" + Description + "</td></tr>" +
"<tr><td><b>Position: </b></td><td>" + job_position + "</td></tr></table>";
counter = counter + 1;
rs.close();
conn.close();
jTextArea1.setText("Sleeping");
jTextArea1.setText(desc);
desc = "";
catch (SQLException se){
jTextArea1.setText(desc + se);
catch(Exception ee){
jTextArea1.setText("Exception occured\n\n" + ee);
}Get your basics checked.
Go to:
http://developer.java.sun.com/developer/onlineTraining/GUI/AWTLayoutMgr/shortcourse.html#whatAreLMs
And find the heading: FlowLayout Variations
FlowLayout can be customized at construction time by passing the
constructor an alignment setting:
FlowLayout.CENTER (the default)
FlowLayout.RIGHT
FlowLayout.LEFT -
Question: How to draw to an arbitray position on Screen
How can one draw to an arbitrary position on screen without getting a Graphics object from a JFrame, JDialog, etc...?
I am needing the ability to create a special kind of popup, like a tooltip, but with a special shape (Like the text spoken by characters in a comic book).Hi acalvin1,
The thing you are drawing will need to be in some kind of container/window/frame, whatever you want to call it. This is due to the way that the swing libraries delegate the painting of top level containers to their peer equivalent on the OS you are using. Once you have this container you can pretty much draw in it what you like.
To create speach bubbles you would need to create a component that takes care of painting itself via its paint method (really). You need to get the graphcis object for drawing irrespective of the type of shape you want to draw.
You may want to consider posting to the swing forum as you might get a better response.
nes -
Cursor position on screen data in module pool programming(urgent)
Hi all,
I developed a module pool program which will save the data after scanning the barcode data.
In my program screen 100 is there which contains field 2dbar. scanned data is comming to 2dbar field.
we r doing scan 4 times.once for vendor number,once for material no. like this.
After 1st scan, vendor number will come to field 2dbar.
Then I developed logic to put comma after each scanned data come to this field 2dbar.
MODULE put_comma INPUT.
CASE OK_CODE.
when ''.
move 2dbar to 2dbar1.
clear 2dbar.
concatenate 2dbar1 ',' into 2dbar2.
*replace 2dbar with 2dbar2 into 2dbar.
move 2dbar2 to 2dbar.
*write 2dbar2 to 2dbar.
condense 2dbar no-gaps.
*move '' to 2dbar.
*set cursor field 2dbar offset 5.
*write
ENDCASE.
ENDMODULE. " put_comma INPUT
By above logic, comma comes to the starting position of 2dbar after each scan. i.e cursor position is coming to the starting position of screen field 2dbar.
Now I need to move the cursor position after the comma position on 2dbar after each scan.
after 1st scan, 2dbar contains
vmotorola
then my logic puts a comma when u put enter on screen 100.
now 2dbar contains
vmotorola,
i should get the cursor position after the comma.but i am getting cursor position before 'v'.so how to move this cursor position beyond comma after each scan.
I added set cursor command but it is not working.plz
What is the logic, I need to put in PAI to move the cursor on selection screen.
Already the logic I have mentioned. with that logic, I can put comma.now I need to add cursor movement logic to move the cursoron on screen field 2dbar.
Plz reply me as it is urgent.
Thanks in advance.
Regards
pabitraCASE OK_CODE.
when ''.
move 2dbar to 2dbar1.
clear 2dbar.
concatenate 2dbar1 ',' into 2dbar2.
move 2dbar2 to 2dbar.
condense 2dbar no-gaps.
len = strlen ( 2dbar ).
len = len - 1.
set cursor field 2dbar offset len.
ENDCASE.
ENDMODULE. " put_comma INPUT -
Illegal component position error
Hi I'm new to GUI's and I'm trying to add a menu bar onto my jframe for a creation of a word processor. I'm using the Jtextarea for the text field. I keep getting this message but dont understand what it means:
java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Container.java:325)
at java.awt.Container.add(Container.java:252)
at javax.swing.JMenu.add(JMenu.java:511)
at wordprocessor.WordProcessorDemo.<init>(WordProcessorDemo.java:68)
at wordprocessor.WordProcessorDemo.main(WordProcessorDemo.java:18)Any help would be greatly appreciated. Thanks.Is that the only thing wrong or is there more to it?
-
Illegal component position when add JLabel to JtextPane
Hi all,
I want to add a JLabel to a JTextPane, the label shoud be put in the lines of text just like the normal text. I have some questions:
1. How can I put the label in the position we want, when I use the method add(label, textPane.getStyledDocument().getLength()), it generates exception :"illegal component position"
2. How can I set the width and the height of the label so that user cannot know that I used the label. I mean the text on label and the normal text on JTextPane must look the same. Of course I know the length of the caption of the label
Thank you very muchHow can I put the label in the position we want, I'm not sure you can add a component using that method. I think there is an insertComponent(...) method to use. Also you may need to make the text pane uneditable first if I remember correctly. Something like:
textPane.setEditable(false);
textPane.insertComponent(...);
textPane.setEditable(true);
How can I put the label in the position we want, label.setFont(textPane.getFont()); -
Position on component in the screen
Hi!
I want to get position a text field on screen. I use method getBounds(), but this method get position on text field concerning on it parent. But I want to get positon concerning on screen.What can I do?
Thank you.SwingUtilities.convertPointToScreen( new Point(0,0), textField )
* Convert a point from a component's coordinate system to
* screen coordinates.
* @param p a Point object (converted to the new coordinate system)
* @param c a Component object
public static void convertPointToScreen(Point p,Component c) -
is there any way to get the mouses position on the screen (not a window)?
StephenComponent c = (Component)e.getSource();
Point p = e.getPoint();
SwingUtilities.convertPointToScreen(p, c);
System.out.println(p); -
Mapping component location from screen coordinates
hello ...
I have to display popup menu on click of jtable's cell. When my popup appears, it get displayed too far away from table. My table is on a jinternalframe within desktoppane. I have used the following code to map screen coordinates to component coordinates.
public void mouseClicked(MouseEvent mev)
int tabcol = parentTable.columnAtPoint(mev.getPoint());
Point p = mev.getPoint();
int c = parentTable.columnAtPoint(p);
int r = parentTable.rowAtPoint(p);
Rectangle a = parentTable.getCellRect(r, c, true);
displayAt((int)a.getX(),(int)a.getY()+parentTable.getRowHeight(0), r);
after applying above strategy, i succeeded in positioning the popup horizontally, but it is still above the cell where i want it to be.
so, thats the problem basically.
any professional comments/solutions will be hightly appreciated.
cheers,
Raheel.Well, i have used those swingutilities methods too, but no luck. I think i am using some wrong ones like "convertPointToScreen" OR "convertPointFromScreen". If you plz specify the correct methods with proper usage then it might solve my problem.
thanks...
Raheel. -
Dynamically component position
hello all,
In a screen is a component(dropdown list) which must be positioned always at the center of the screen. How to set its position accorded to the screen size?
thank you a lot
Bogdani am not sure but you can drag and drop any column in screen. also you have column number feature in attribute
-
How to read context node/attribute data of diff UI component of same screen
Hi,
I am new to CRM and as well as BSP, Now the requirement is, at the time of Lead creation, when the end user enters customer code and sales area i need to fetch and display the customer group 1 value( VIP,KAM etc) based on the customer's sales area, ( these are sales area specific values).
but the problem is Customer code is in diff UI component and sales area data is in diff UI component .
1) customer code attribute is in UI component BT108H_LEA, View BT108H_LEA\Detail, Context node is BTPARTNERPROSPECT.
2) sales area fields are in the UI component BTORGSET, View BTORGSET\OrgSetData, Context node is BTORGSET.
3) I have created new field(customer type to display the customer group 1 value "VIP") in UI component BT108H_LEA, View BT108H_LEA\Detail, Context node is BTLEADH.
To display the value in the context node BTLEADH, i need to know the sales area data which is entered in BTORGSET.
Kindly let me know how to read the data which is in diff UI component of the same Lead creation screen.
i written following code in context node BTLEADH, atttribute New Zfield, in get method, but not able solve, please guide me.
DATA: LR_ENT TYPE REF TO CL_CRM_BOL_ENTITY,
LR_COL TYPE REF TO IF_BOL_ENTITY_COL.
LR_ENT ?= ME->TYPED_CONTEXT->BuilHeader->COLLECTION_WRAPPER->GET_CURRENT( ).
LR_COL = LR_ENT->GET_RELATED_ENTITIES( IV_RELATION_NAME = 'BuilSalesArrangementRel' ).
LR_ENT ?= LR_COL->GET_FIRST( ).
IF LR_ENT IS BOUND.
LR_ENT->GET_PROPERTY_AS_VALUE( EXPORTING IV_ATTR_NAME = 'DIVISION' IMPORTING EV_RESULT = LV_DIVISION ).
ENDIF.
I'll appreciate if you can provide me some documents to refer.
awaiting for your responses.
Thanks
BhanuHi Gangadhar,
I think i have not clearly explained my requirement, let me put it once again. My requirement is, I have to read two UI component data, validate and display some value in one new zfield which is in one of the UI components.
I need to display customer's sales area specific data like customer group 1 value in that new zfield. for that i need Customer code and as well as sales area data from the screen.
1) customer code attribute is in UI component BT108H_LEA, View BT108H_LEA\Detail, Context node is BTPARTNERPROSPECT.
2) sales area fields are in the UI component BTORGSET, View BTORGSET\OrgSetData, Context node is BTORGSET.
3) I have created new field(customer type to display the customer group 1 value "VIP") in UI component BT108H_LEA, View BT108H_LEA\Detail, Context node is BTLEADH.
As per my understanding, in the context node BTLEADH, GET_METHOD of atttribute New Zfield, i have to read customer code from UI component BT108H_LEA, View BT108H_LEA\Detail, Context node is BTPARTNERPROSPECT and Sales area data from UI component BTORGSET, View BTORGSET\OrgSetData, Context node is BTORGSET based on the values, validate and display the data.
But as per your recent reply you are asking me to write the code in get_property_attribute---division. so i didnt understand.
Kindly clarify if i am wrong.
awaiting for your response.
Thanks
BHanu -
How to get the cursor position from screen in module pool program
Hi,
I am doing the module pool program, I have one table control in one screen.
I have to give functionality to the user that when the user enters first record in the table control and after filling the last field
when he presses enter the cursor will have to come in the starting field of the second record.
I know the logic , but i m bit confused.
Can any body help me to solve this....
thanksHi,
Check this code,
Write it in the PBO
MODULE SET_CURSOR_WERTKONTRAKT.
MODULE SET_CURSOR_WERTKONTRAKT OUTPUT.
PERFORM SET_CURSOR USING 'VBAP-ZWERT'.
ENDMODULE. " SET_CURSOR_WERTKONTRAKT OUTPUT
FORM SET_CURSOR USING US_FELDNAME.
DATA: DA_TFILL LIKE SY-TFILL.
DESCRIBE TABLE IVBAP LINES DA_TFILL.
FCODE 'Create Position':
==> Cursor to the first free line set to make the new position
Can be created directly
IF DA_TFILL EQ 0.
SET CURSOR FIELD US_FELDNAME LINE 1. -> set cursor position
ELSE.
SET CURSOR FIELD US_FELDNAME LINE 2.
ENDIF.
Product proposal actively
Set ==> cursor in the first row
IF DPP_ACTIVE EQ CHARX AND
XVBAP_UMFANG_OPV IS INITIAL.
in the 'target volume' if available
IF KOPGR_MIT_ZMENG CS TVAK-KOPGR.
SET CURSOR FIELD 'VBAP-ZMENG' LINE 1.
EXIT.
ELSE.
Else in the field 'Order quantity'
SET CURSOR FIELD 'RV45A-KWMENG' LINE 1.
EXIT.
ENDIF.
ENDIF.
Hope it helps you,
Regards,
Abhijit G. Borkar -
Menu Bar Component Positioning
Hello,
I'm looking for a way to position a Menu Bar swf (made from
the menubar component) at the top of the web page, so it does not
push the rest of the content down the page and end up with a bunch
of white space. I believe it would be done with a style sheet.
Anynone have any suggestions for such a style sheet?
ThanksHi Noel,
Here is a link to what I am speaking of. It is just a test
example.
http://www.mallisoft.com/testbed/menu/menutest.html
I would like to like the content to fit right under the menu.
Thanks -
Production Order Component Overview (SAPLCOMK - screen 120)
PP Experts,
Have a requirement to add column to the component overview screen within production order create, change and display (CO01,CO02 & CO03). In particular the column is the material master field - old material number (MARA-BISMT).
Any suggestions how to approach this requirement?
Thanks,
Barryonly ABAP can help u.
i dont it will be big job for an abper.
but since you are asking standard screen change..then it may ask for acess key or something...not sure.
Pravin M. -
Facebook Login Window Position on screen
I am working on a kiosk application that must be ADA compliant. Since the screen is vertical and designed for a standing adult, to be ADA comliant, there must be a mode where the UI is all on the lower portion of the screen. This is simple except that I cannot get the Facebook Login window to display in the lower portion of the screen, it will only appear in the center in a new OS window. The LoginWindow class has two properties of width and height that can be set, but not the position of the window on the screen. Is there a way to set a position for where the Facebook Login window appears on screen?
That sounds like an OS level question rather than an AIR specific question. You may have better luck searching for support on your OS.
Maybe you are looking for
-
Hi there, I am a beginner in Visual Basic Express 2010. I have a Point of Sale program that uses DataGridView to display records from an external microsoft access database using the fillby query. It works, but it repopulates the same row each time,
-
A way to use G network devices with 5ghz 'N' network devices?
Hi guys, I recently setup my new Airport Extreme in 5ghz 'N" mode - it shares a hard drive with all my Macs, and it streams large movies (some HD) to Macs, and to my Apple TV. I love the pure 5ghz N mode for its speed - it enables me to get the same
-
Define read-only authorization for specific field(s) on a form for 11.5.9
Dear all, Can you pls let me know how is it possible to define read-only authorization access for specific field(s) per responsibility / user on a form in 11.5.9? For example I want to protect the item master file by assigning for example to users wi
-
Mail and address book crashes with SL, not able to import messages
Hi, I've got about 10 years of email messages current inaccessible since I upgraded to SL..... Currently, Mail and Address book both crash upon opening. I don't need address book because luckily I have jettisoned that program, but I do need to someho
-
My iTunes folder is corrupt on my external hard drive and it is all gibberish (i.e., name turned to symbols and punctuation marks, etc.). I'm fairly certain that it's not my hard drive because I am able to open and use other files on the drive. I am