Get array values from multidim array
Hello Everyone,
I am working with a two dim array. double twoDim[] = new double[100][100]. If I want to take "strips" of the array based on the x values I just do this.
for(int i = 0; i < twoDim.length; i++)
double a[] = twoDim;
My question is how do I do a loop that returns a single dimensional array with respect to the y value ? In effect doing this, (which fails miserably by the way).for(int i = 0; i < twoDim.length; i++)
double a[] = twoDim[][i];
Sincerely,
Chem_E
That can't be done. The reason why it works so well with getting separate rows out of the 2d-array is that multi-dimensional arrays in Java are really just arrays of arrays.
So each row is a separate array, which you can easily handle as a separate Object.
You could wrap your 2d-array in a custom class (let's call it Matrix) and provide accessors that return views on the rows/columns (you could call them Vectors).
Similar Messages
-
Get distinct values from plsql array
Hi,
I have declared a variable as below in plsql proc.
type t_itemid is table of varchar2(10);
inserted set of items in to this using a program
now i want distinct values from that array how can i get it.I am using 9i so i cannot use set operator and more over my problem is that i am declaring the variable inside the plsql block . when i tried i am getting the below errors:
SQL> r
1 declare
2 type t_type is table of varchar2(10);
3 v_type t_type;
4 begin
5 v_type := t_type('toys','story','good','good','toys','story','dupe','dupe');
6 for i in (select column_value from table(v_type)) loop
7 dbms_output.put_line(i.column_value);
8 end loop;
9* end;
for i in (select column_value from table(v_type)) loop
ERROR at line 6:
ORA-06550: line 6, column 41:
PLS-00642: local collection types not allowed in SQL statements
ORA-06550: line 6, column 35:
PL/SQL: ORA-22905: cannot access rows from a non-nested table item
ORA-06550: line 6, column 10:
PL/SQL: SQL Statement ignored
ORA-06550: line 7, column 22:
PLS-00364: loop index variable 'I' use is invalid
ORA-06550: line 7, column 1:
PL/SQL: Statement ignored -
Get numerical values from 2D array of string
Hello!
I start by saying that I have a base knowledge of LabView. I'm using LabView 2011. I'm doing some communications test via Can-Bus protocol. As you can see in pictures of the block diagram and of the front panel that I've attached I'm using "Transmit Receive same Port" LabView example. It works very good but I would need to insert the 8 data bytes that I receive from the server in 8 different numerical variables so that I could use them to make some operations. How can I get numerical values from the 2D array of string that I attached?
Every example that you can provide is important!
Thank you very much!
Attachments:
1.jpg 69 KB
2.jpg 149 KBHi martiflix,
ehm: to unbundle data from a cluster I would use the function Unbundle(ByName)…
When you are new to LabVIEW you should take all the FREE online resources offered by NI on their website!
Best regards,
GerdW
CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
Kudos are welcome -
How to get a value from an array in a nested loop
Hi
I have an array inside a four loop. The for loop (it is supposed to run 4 times) is further inside a while loop. The array consists of four elements and the values each of these elements are fed before running the program. To receive the values of each of these elements one by one outside the for loop, I am using the function index array. To receive all the values one by one, I created a shift register and wired the output of the index arrray to it. The problem is that instead of receiving all the values one by one, I am receiving only the value in the fourth
element of the array...Can someone please help me..The attached file is my program.
Attachments:
Value from array.vi 25 KB -
Trying to get a value from 1 array based off the ID in another
Something like this.
rankGrade = model.rankArray.RANKABBRIVIATION where
model.rankArray.RANKGRADEID = model.student.RANKGRADEID
Any suggestions?You could use associative arrays, or even better to use XML
with e4x syntax. See these FB3 help topics:
Associative arrays
The E4X approach to XML processing
myXML.item.(menuName=="small fries").@quantity = "2"; -
Get value from the array based on the HashCode
public static void runJoin(int[][] t1,int[][] t2)
PrintWriter out=null;
int rows = 1000;
int cols = 7;
int [][] myTable3 = new int[rows][cols];
int x = 0;
System.out.print("Running HashJoin:Method loads the "+
"smaller table in the memory and applies a hashing function "+
"to common column and stores it in another table. "+
"The larger table is then read from the file. "+
"The same hashing function is applied to Col n of the table and a matching record in the first table is looked up. A match will create a row in Table 3. ");
//Apply hashing function to smaller table and store it in the memory.
Integer[] It2 = new Integer[t2.length];
int [] hashCodest2 = new int[t2.length];
Hashtable ht = new Hashtable();
for(int i =0; i <t2.length;i++){
It2[i] = new Integer(t2[0]);
hashCodest2[i] = It2[i].hashCode();
ht.put(new Integer(hashCodest2[i]),It2[i]);
//Larger table get hashcodes
Integer It1[] = new Integer[t2.length];
int [] hashCodest1 = new int[t2.length];
for(int j =0; j <t1.length;j++){
It1[j] = new Integer(t1[j][4]);
hashCodest1[j] = It1[j].hashCode(); }
//Based on the hashcode get the value from the Table2;
try{
out = new PrintWriter( new FileOutputStream( "c:\\HashJoinTable.txt" ) );
Enumeration e = ht.keys();
while(e.hasMoreElements())
//How do I get the value from the array based on the HashCode? Do I need to do a loop here???
hashCodes1.get(e.nextElement());
}catch(Exception e){}ok I got it......
//Apply hashing function to smaller table and store it in the memory.
Integer[] It2 = new Integer[t2.length];
int [] hashCodest2 = new int[t2.length];
Hashtable ht = new Hashtable();
for(int i =0; i <t2.length;i++){
It2[i] = new Integer(t2[0]);
hashCodest2[i] = It2[i].hashCode();
ht.put(new Integer(hashCodest2[i]),It2[i]);
//Larger table get hashcodes and compare
Integer It1[] = new Integer[t2.length];
int [] hashCodest1 = new int[t2.length];
Hashtable ht2 = new Hashtable();
for(int j =0; j <t1.length;j++){
It1[j] = new Integer(t1[j][4]);
hashCodest1[j] = It1[j].hashCode();
ht2.put(new Integer(hashCodest1[j]),It1[j]);
//Based on the hashcode get the value from the Table2;
try{
out = new PrintWriter( new FileOutputStream( "c:\\HashJoinTable.txt" ) );
Enumeration e = ht.keys();
Integer t3[] = new Integer[t2.length];
while(e.hasMoreElements())
t3[x] = (Integer) ht2.get(e.nextElement());
x++;
}catch(Exception e){} -
How to get the values of an Array using JSP Tags
Hey guys,
I need some help. I've splited a String using
fn:split(String, delim) where String = "1,2,3,4" and delim is ,
This method returns an Array of splited Strings. how do i get the values from this array using jsp tags. I don't wanna put java code to achive that.
Any help would be highly appreciated
ThanksThe JSTL forEach tag.
In fact if all you want to do is iterate over the comma separated list, the forEach tag supports that without having to use the split function.
<c:set var="list" value="1,2,3,4"/>
<c:forEach var="num" items="${list}">
<c:out value="${num}"/>
</c:forEach>The c:forTokens method will let you do this with delimiters other than a comma, but the forEach tag works well just with the comma-delimited string. -
Passing values from method array to class array
HELP!! Plz excuse any ignorance. Am a noob and have created an array within my class. I then try to alter those array values from inside one of the classes methods. When I try to access the new values from the class array, they don't exist. I think it's a duration/scope issue and am struggling to get around it. This is the only way I can implement the task required and would appreciate any advice you can thorw. cheers in advance.. =~D
I suspect that you're altering an array passed as a parameter, rather than array that's a field of the instance, but as you didn't post any of your code, that can only be a guess.
-
Finding the smallest value from an array
Hi there :)
I started learning Java a few days ago and have now run into my first problem :p
I am using Netbeans on Mac OS X.
I need to find the smallest value from an array. So far I've had no luck. Any suggestions would be fantastic.
The code so far:
* Math Problems
* Created on May 4, 2007, 10:54 AM
* PROJECT 1: - IN PROGRESS
* Create a program that allows you to create an integer array of 18 elements with the following values
* 3, 2, 4, 5, 6, 4, 5, 7, 3, 2, 3, 4, 7, 1, 2, 0, 0, 0
* - The program computes the sum of elements 0 to 14 and stores it in element 15 // COMPLETED
* - The program computes the average and stores it in element 16 // COMPLETED
* - The program finds the smallest value from the array and stores it in element 17
* PROJECT 2: - TO DO
* Write a program that accepts from the command line and prints them out. Then use a for loop to print
* the next 13 numbers in the sequence where each number is the sum of the previous two. FOR EXAMPLE:
* - input>java prob2 1 3
* - output>1 3 4 7 11 18 29 47 76 123 322 521 843 1364
* PROJECT 3: - TO DO
* Write a program that accepts from the command line two numbers in the range from 1 to 40. It then
* compares these numbers against a single dimension array of five integer elements ranging in value
* from 1 to 40. The program displays the message BINGO if the two inputted values are found in the array
* element. FOR EXAMPLE:
* - input>java prob3 3 29
* - output>Your first number was 3
* - Your second number was 29
* - Its Bingo! // This message if 3 and 29 are found in the array
* - Bokya! // This message if 3 and 29 are not found in the array
* - The array was 7 5 25 5 19 30
* PROJECT 3 EXTENSION: - OPTIONAL
* Generate the array of 5 unique integers using random numbers
package mathproblems;
* @author Mohammad Ali
public class Main {
/** Creates a new instance of Main */
public Main() {
* @param args the command line arguments
public static void main(String[] args) {
int A[]={3,2,4,5,6,4,5,7,3,2,3,4,7,1,2,0,0,0};
int O = A.length - 3;
int B = A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] + A[7] + A[8] + A[9] + A[10] + A[11] + A[12] + A[13] + A[14];
A[15] = B; // Stores the sum of the integers in A[15]
int C = B / O;
A[16] = C; // Computes and stores the average in A[16]
int D = 101;
if (A[0] < A[1]) { D = A[0]; }
else { D = A[1]; }
if (A[1] < A[2]) { D = A[1]; }
else { D = A[2]; }
System.out.println("There are " + O + " numbers in the Array");
System.out.println("Those numbers add up to " + B + ".");
System.out.println("The average of those numbers is " + C + ".");
System.out.println("The smallest value in the array is " + D + ".");
}The code is incomplete, but it works so far. The problem is I know there must be an easier way. SAVE ME :)OK :)
Just thought I should show you the output as to help anyone else with the same problem:
* Math Problems
* Created on May 4, 2007, 10:54 AM
* PROJECT 1: - IN PROGRESS
* Create a program that allows you to create an integer array of 18 elements with the following values
* 3, 2, 4, 5, 6, 4, 5, 7, 3, 2, 3, 4, 7, 1, 2, 0, 0, 0
* - The program computes the sum of elements 0 to 14 and stores it in element 15 // COMPLETED
* - The program computes the average and stores it in element 16 // COMPLETED
* - The program finds the smallest value from the array and stores it in element 17 // COMPLETED
* PROJECT 2: - TO DO
* Write a program that accepts from the command line and prints them out. Then use a for loop to print
* the next 13 numbers in the sequence where each number is the sum of the previous two. FOR EXAMPLE:
* - input>java prob2 1 3
* - output>1 3 4 7 11 18 29 47 76 123 322 521 843 1364
* PROJECT 3: - TO DO
* Write a program that accepts from the command line two numbers in the range from 1 to 40. It then
* compares these numbers against a single dimension array of five integer elements ranging in value
* from 1 to 40. The program displays the message BINGO if the two inputted values are found in the array
* element. FOR EXAMPLE:
* - input>java prob3 3 29
* - output>Your first number was 3
* - Your second number was 29
* - Its Bingo! // This message if 3 and 29 are found in the array
* - Bokya! // This message if 3 and 29 are not found in the array
* - The array was 7 5 25 5 19 30
* PROJECT 3 EXTENSION: - OPTIONAL
* Generate the array of 5 unique integers using random numbers
package mathproblems;
* @author Mohammad Ali
import java.util.Arrays;
public class Main {
/** Creates a new instance of Main */
public Main() {
* @param args the command line arguments
public static void main(String[] args) {
int A[]={3,2,4,5,6,4,5,7,3,2,3,4,7,1,2,0,0,0};
Arrays.sort(A);
System.out.println("The smallest value in the array is " + A[0] + ".");
int num = A.length;
System.out.println("There are " + num + " values in the Array.");
int sum = 0;
for (int i = 0; i < A.length; i++) {
sum+=A;
System.out.println("Those numbers add up to " + sum + ".");
double d = (double)sum/num;
System.out.println("The average value of those numbers is " + d + ".");
What Iearned:
1) How to create for loops properly
2) How to import java.util.Arrays ( =D )
3) How to get a more accurate average using double instead of int
4) This forum is the best and has very helpful people 24/7 ( =D)
Thanks Again,
Mo. -
Removing a value from an array
I have searched the forums, and found many post about this, but with different variances.
i have an array, where if a user passes an argument that already exists in the array, it will remove that value from the array. when i run the code below i get a boolean exception. i "think" my thinking is correct, but i cannot seem to put it into code terms (HAH! thats a first eh?).
what exactly be the difference to setting the position to 0 or to null?
public void remove(int lessNum) throws NotFoundException {
for( int i=0;i<this.occupied.length;i++) {
if(occupied.equals(lessNum)
occupied[i] = null;
else
throw new NotFoundException();
}//end for
}//end remove
this is the exception i get: boolean cannot be dereferenced
if(occupied[i].equals(lessNum)
^
Thanks,
JHi.
(You have a few typos in your code, but I'm assuming that's because you typed it in again when you sent your posting rather than copying and pasting it. Your compilation error is also not consistent with the code, but I'll take a guess at what is going on)
There are a number of things that are strange about the code example.
1. It looks like your 'occupied' field is a boolean[] (the compilation error indicates that this is the case). That means each element of occupied is a primitive boolean, not a reference. Therefore trying to dereference it makes no sense. This is what the compiler error is telling you. Note that this is not an exception.
2. Now looking at the intent of what I think you're trying to do... I think you are trying to determine if element i of the 'occupied' array is equal to the parameter 'lessNum'. This is nonsensical since the elements of 'occupied' are booleans and lessNum is an int.
3. Finally, trying to set an element of 'occupied' to null, doesn't make sense because the elements of 'occupied' are not references, but primitives.
Regarding your question about the difference between setting something to 0 or null: I assume you come from a C or C++ background where 0 and null are the same thing. In Java, null is not equivalent to 0 but is instead a special value for a variable of reference type that means that the variable is not currently referring to anything. In C and C++ if a pointer has the value 'null' or 'zero' it simply means that any attempt to dereference it will mean an attempt to look for an object at memory address 0 which will usually result in unimaginable horrors (alright, it's not that bad).
Regards,
Lance
Lance Walton - [email protected]
Team In A Box - Software without Tragedy
http://www.teaminabox.co.uk -
How to get multiple values from the list
I've a list of an item which I queried it from the database. I also created a button that will takes a selected items from the list when it was clicked. I used javabean to get the data from database.
<% // clicked on Select District Button
Vector vselectedDistrict = new Vector();
Vector vdistrictID = new Vector();
String tmpSelectDistrict = "";
tmpSelectDistrict = request.getParameter("bSelectDistrict");
if(tmpSelectDistrict != null)
// get multiple values from the list
String[] selectedDistrict = request.getParameterValues("usrTDistrict");
vselectedDistrict.clear();
vdistrictID.clear();
if((selectedDistrict != null) && (selectedDistrict.length != 0))
for(int i=0;i<selectedDistrict.length;i++)
vselectedDistrict.addElement(selectedDistrict);
vdistrictID = dbaseInfo.getcurrentDistrictID(nstate,vselectedDistrict);
for(int i=0;i<vdistrictID.size();i++)
out.println("district = " + selectedDistrict[i]); out.println("district ID= " + vdistrictID.get(i).toString());
%>
// get vdistrict from the database here......
<select name="usrTDistrict" size="5" multiple>
<% for(int i = 0; i< vdistrict.size(); i++)
%>
<option value="<%=vdistrict.get(i).toString()%>"><%=vdistrict.get(i).toString()%></option>
<%
%>
</select>
<input type="submit" name="bSelectDistrict" value="Select District">
Lets say the item that i selected from the list is 'Xplace' and I clicked on the Select District button,
what I got is this error message:
org.apache.jasper.JasperException: Unable to convert string 'Xplace' to class java.util.Vector for attribute usrTDistrict: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager
So where is going wrong and what the message means?. Any help very much appreciated. ThanksThese are just guesses that might hopefully steer you in directions you haven't looked in yet.
I presume you used triangle brackets (< >) to avoid having the Jive Forum think it was the "italics" tag?
Are you certain this: dbaseInfo.getcurrentDistrictID(nstate,vselectedDistrict);
expects a Vector as its second parameter? And returns a Vector?
I don't believe you've shown how you use the javabean, or its code? Perhaps it should be rewritten to accept an array of strings instead of a Vector? -
Getting the Values from a Tiled View
Hi,
I have a TiledView and I have checkbox in the tiled view. I am trying
to get the values of the checked boxes.
I have coded like this.
Object[] links = getRSystemLinks().getCbSystemUrl().getValues();
if I see the links.length i get only one. In html If I see the code
it appends the TileIndex in brackets. If I replace the TileIndex with
0 in all the fields in endCbSystemUrl method I get the correct values.
In the TiledView beginDisplay() method my code is like this.
if (getPrimaryModel() == null) throw new ModelControlException
("Primary model is null");
super.beginDisplay();
resetTileIndex();
pgCustomizeLinksViewBean parentBean = (pgCustomizeLinksViewBean)
getParent();
((DatasetModel) getDefaultModel()).setSize
(parentBean.SystemChoicesValue.size());
Any Suggestions on this.
Thanks
NamburiNamburi--
Remember, the getValues() method does not return the values from a column in
a TiledView. It is strictly for use by fields that can have multiple
values, like multi-select list boxes.
DO NOT remove the indexing feature from the field names, especially in the
case of checkboxes, because checkboxes aren't submitted back to the server
unless they are checked. By overriding the automatic checkbox tracking
feature JATO provides, you won't be able to tell which checkboxes were
actually checked by row--you'll simply get back a list the same size as the
number of checkboxes that were checked, without any placeholders for the
ones that weren't checked.
Instead, on submit, you simply need to move through the tiledView and check
the value of checkbox on each row:
tiledView.beforeFirst();
while (tiledView.next())
if (getDisplayFieldBooleanValue("myCheckBox"))
You can use the same construct to build up an array or list:
List checkedList=new LinkedList();
tiledView.beforeFirst();
while (tiledView.next())
if (getDisplayFieldBooleanValue("myCheckBox"))
checkedList.add(new Boolean(true))
else
checkedList.add(new Boolean(false))
Todd
Todd Fast
Senior Engineer
Sun Microsystems, Inc.
todd.fast@s...
----- Original Message -----
From: <vnamboori@y...>
Sent: Wednesday, October 17, 2001 3:49 PM
Subject: [iPlanet-JATO] Getting the Values from a Tiled View
Hi,
I have a TiledView and I have checkbox in the tiled view. I am trying
to get the values of the checked boxes.
I have coded like this.
Object[] links = getRSystemLinks().getCbSystemUrl().getValues();
if I see the links.length i get only one. In html If I see the code
it appends the TileIndex in brackets. If I replace the TileIndex with
0 in all the fields in endCbSystemUrl method I get the correct values.
In the TiledView beginDisplay() method my code is like this.
if (getPrimaryModel() == null) throw new ModelControlException
("Primary model is null");
super.beginDisplay();
resetTileIndex();
pgCustomizeLinksViewBean parentBean = (pgCustomizeLinksViewBean)
getParent();
((DatasetModel) getDefaultModel()).setSize
(parentBean.SystemChoicesValue.size());
Any Suggestions on this.
Thanks
Namburi
[email protected] -
NullPointerException - Cannot get the value from variable f_cashGiven
In SubCheckout.java (a POS), what I want is when Payment button (f_cashPayment) is pressed, the action "Cash" is performed, get the value from Cash Given (f_cashGiven), do the subtraction and post the value as Cash Return (f_cashReturn). The code is filled in actionPerformed. But I cannot get the value by using f_cashGiven.getValue() from VNumber class. It returns NULL. This should be quite straight forward, but I do not know what is wrong. Please help!
Enclosed please find the source code of SubCheckout.java and VNumber.java
This is the code of SubCheckout.java :
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
package org.compiere.pos;
import java.awt.*;
import java.awt.event.*;
import java.math.BigDecimal;
import javax.swing.border.*;
import org.compiere.grid.ed.*;
import org.compiere.swing.*;
import org.compiere.util.*;
* POS Checkout Sub Panel
* @author Jorg Janke
* @version $Id: SubCheckout.java,v 1.3 2005/03/11 20:28:22 jjanke Exp $
public class SubCheckout extends PosSubPanel implements ActionListener
* Constructor
* @param posPanel POS Panel
public SubCheckout (PosPanel posPanel)
super (posPanel);
} // PosSubCheckout
private CButton f_register = null;
private CButton f_summary = null;
private CButton f_process = null;
private CButton f_print = null;
private CLabel f_lcreditCardNumber = null;
private CTextField f_creditCardNumber = null;
private CLabel f_lcreditCardExp = null;
private CTextField f_creditCardExp = null;
private CLabel f_lcreditCardVV = null;
private CTextField f_creditCardVV = null;
private CButton f_cashPayment = null;
private CLabel f_lcashGiven = null;
private VNumber f_cashGiven = null;
private CLabel f_lcashReturn = null;
private VNumber f_cashReturn = null;
private CButton f_creditPayment = null;
/** Logger */
private static CLogger log = CLogger.getCLogger(SubCheckout.class);
* Initialize
public void init()
// Title
TitledBorder border = new TitledBorder(Msg.getMsg(Env.getCtx(), "Checkout"));
setBorder(border);
// Content
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = INSETS2;
// -- 0
gbc.gridx = 0;
f_register = createButtonAction("Register", null);
gbc.gridy = 0;
add (f_register, gbc);
f_summary = createButtonAction("Summary", null);
gbc.gridy = 1;
add (f_summary, gbc);
f_process = createButtonAction("Process", null);
gbc.gridy = 2;
add (f_process, gbc);
f_print = createButtonAction("Print", null);
gbc.gridy = 3;
add (f_print, gbc);
// -- 1 -- Cash
gbc.gridx = 1;
gbc.gridheight = 2;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = .1;
CPanel cash = new CPanel(new GridBagLayout());
cash.setBorder(new TitledBorder(Msg.getMsg(Env.getCtx(), "Cash")));
gbc.gridy = 0;
add (cash, gbc);
GridBagConstraints gbc0 = new GridBagConstraints();
gbc0.insets = INSETS2;
gbc0.anchor = GridBagConstraints.WEST;
f_lcashGiven = new CLabel(Msg.getMsg(Env.getCtx(),"CashGiven"));
cash.add (f_lcashGiven, gbc0);
f_cashGiven = new VNumber("CashGiven", false, false, true, DisplayType.Amount,
Msg.translate(Env.getCtx(), "CashGiven"));
f_cashGiven.addActionListener(this);
f_cashGiven.setColumns(10, 25);
cash.add (f_cashGiven, gbc0);
f_cashGiven.setValue(Env.ZERO);
f_lcashReturn = new CLabel(Msg.getMsg(Env.getCtx(),"CashReturn"));
cash.add (f_lcashReturn, gbc0);
f_cashReturn = new VNumber("CashReturn", false, true, false, DisplayType.Amount,
"CashReturn");
f_cashReturn.setColumns(10, 25);
cash.add (f_cashReturn, gbc0);
f_cashReturn.setValue(Env.ZERO);
f_cashPayment = createButtonAction("Payment", null);
f_cashPayment.setActionCommand("Cash");
gbc0.anchor = GridBagConstraints.EAST;
gbc0.weightx = 0.1;
cash.add (f_cashPayment, gbc0);
// -- 1 -- Creditcard
CPanel creditcard = new CPanel(new GridBagLayout());
creditcard.setBorder(new TitledBorder(Msg.translate(Env.getCtx(), "CreditCardType")));
gbc.gridy = 2;
add (creditcard, gbc);
GridBagConstraints gbc1 = new GridBagConstraints();
gbc1.insets = INSETS2;
gbc1.anchor = GridBagConstraints.WEST;
gbc1.gridx = 0;
gbc1.gridy = 0;
f_lcreditCardNumber = new CLabel(Msg.translate(Env.getCtx(), "CreditCardNumber"));
creditcard.add (f_lcreditCardNumber, gbc1);
gbc1.gridy = 1;
f_creditCardNumber = new CTextField(18);
creditcard.add (f_creditCardNumber, gbc1);
gbc1.gridx = 1;
gbc1.gridy = 0;
f_lcreditCardExp = new CLabel(Msg.translate(Env.getCtx(),"CreditCardExp"));
creditcard.add (f_lcreditCardExp, gbc1);
gbc1.gridy = 1;
f_creditCardExp = new CTextField(5);
creditcard.add (f_creditCardExp, gbc1);
gbc1.gridx = 2;
gbc1.gridy = 0;
f_lcreditCardVV = new CLabel(Msg.translate(Env.getCtx(), "CreditCardVV"));
creditcard.add (f_lcreditCardVV, gbc1);
gbc1.gridy = 1;
f_creditCardVV = new CTextField(5);
creditcard.add (f_creditCardVV, gbc1);
gbc1.gridx = 3;
gbc1.gridy = 0;
gbc1.gridheight = 2;
f_creditPayment = createButtonAction("Payment", null);
f_creditPayment.setActionCommand("CreditCard");
gbc1.anchor = GridBagConstraints.EAST;
gbc1.weightx = 0.1;
creditcard.add (f_creditPayment, gbc1);
} // init
* Get Panel Position
public GridBagConstraints getGridBagConstraints()
GridBagConstraints gbc = super.getGridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 3;
return gbc;
} // getGridBagConstraints
* Dispose - Free Resources
public void dispose()
super.dispose();
} // dispose
* Action Listener
* @param e event
public void actionPerformed (ActionEvent e)
String action = e.getActionCommand();
if (action == null || action.length() == 0)
return;
log.info( "PosSubCheckout - actionPerformed: " + action);
if (e.getSource() == f_cashGiven) {
f_cashGiven.setValue(f_cashGiven.getValue());
System.out.println("f_cashGiven"+f_cashGiven.getDisplay());
// Register
// Summary
// Print
if (action.equals("Cash")) {
BigDecimal CashGiven, GrandTotal, CashReturn;
System.out.println("Cash given is "+f_cashGiven.getDisplay());
CashGiven = (BigDecimal)f_cashGiven.getValue();
GrandTotal = (BigDecimal)p_posPanel.f_curLine.getOrder().getGrandTotal();
CashReturn = CashGiven.subtract(GrandTotal);
f_cashReturn.setValue(CashReturn);
// Cash (Payment)
// CreditCard (Payment)
} // actionPerformed
} // PosSubCheckoutThis is the code of VNumber.java :
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
package org.compiere.grid.ed;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.math.*;
import java.text.*;
import java.util.logging.*;
import javax.swing.*;
import javax.swing.text.*;
import org.compiere.apps.*;
import org.compiere.model.*;
import org.compiere.swing.*;
import org.compiere.util.*;
* Number Control
* @author Jorg Janke
* @version $Id: VNumber.java,v 1.41 2005/09/03 01:57:16 jjanke Exp $
public final class VNumber extends JComponent
implements VEditor, ActionListener, KeyListener, FocusListener
/** Number of Columns (12) */
public final static int SIZE = 12;
* IDE Bean Constructor
public VNumber()
this("Number", false, false, true, DisplayType.Number, "Number");
} // VNumber
* Create right aligned Number field.
* no popup, if WindowNo == 0 (for IDs)
* @param columnName column name
* @param mandatory mandatory
* @param isReadOnly read only
* @param isUpdateable updateable
* @param displayType display type
* @param title title
public VNumber(String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable,
int displayType, String title)
super();
super.setName(columnName);
m_columnName = columnName;
m_title = title;
setDisplayType(displayType);
LookAndFeel.installBorder(this, "TextField.border");
this.setLayout(new BorderLayout());
// this.setPreferredSize(m_text.getPreferredSize()); // causes r/o to be the same length
// int height = m_text.getPreferredSize().height;
// setMinimumSize(new Dimension (30,height));
// *** Text ***
m_text.setBorder(null);
m_text.setHorizontalAlignment(JTextField.TRAILING);
m_text.addKeyListener(this);
m_text.addFocusListener(this);
// Background
setMandatory(mandatory);
this.add(m_text, BorderLayout.CENTER);
// *** Button ***
m_button.setIcon(Env.getImageIcon("Calculator10.gif"));
m_button.setMargin(new Insets(0, 0, 0, 0));
m_button.setFocusable(false);
m_button.addActionListener(this);
this.add (m_button, BorderLayout.EAST);
// Prefereed Size
this.setPreferredSize(this.getPreferredSize()); // causes r/o to be the same length
// Size
setColumns(SIZE, CComboBox.FIELD_HIGHT-4);
// ReadWrite
if (isReadOnly || !isUpdateable)
setReadWrite(false);
else
setReadWrite(true);
} // VNumber
* Dispose
public void dispose()
m_text = null;
m_button = null;
m_mField = null;
} // dispose
* Set Document
* @param doc document
protected void setDocument(Document doc)
m_text.setDocument(doc);
} // getDocument
private String m_columnName;
protected int m_displayType; // Currency / UoM via Context
private DecimalFormat m_format;
private String m_title;
private boolean m_setting;
private String m_oldText;
private String m_initialText;
private boolean m_rangeSet = false;
private Double m_minValue;
private Double m_maxValue;
private boolean m_modified = false;
/** The Field */
private CTextField m_text = new CTextField(SIZE); // Standard
/** The Button */
private CButton m_button = new CButton();
private MField m_mField = null;
/** Logger */
private static CLogger log = CLogger.getCLogger(VNumber.class);
* Set no of Columns
* @param columns columns
public void setColumns (int columns, int height)
m_text.setPreferredSize(null);
m_text.setColumns(columns);
Dimension size = m_text.getPreferredSize();
if (height > size.height) // default 16
size.height = height;
if (CComboBox.FIELD_HIGHT-4 > size.height)
size.height = VLookup.FIELD_HIGHT-4;
this.setPreferredSize(size); // causes r/o to be the same length
this.setMinimumSize(new Dimension (columns*10, size.height));
m_button.setPreferredSize(new Dimension(size.height, size.height));
} // setColumns
* Set Range with min & max
* @param minValue min value
* @param maxValue max value
* @return true, if accepted
public boolean setRange(Double minValue, Double maxValue)
m_rangeSet = true;
m_minValue = minValue;
m_maxValue = maxValue;
return m_rangeSet;
} // setRange
* Set Range with min & max = parse US style number w/o Gouping
* @param minValue min value
* @param maxValue max value
* @return true if accepted
public boolean setRange(String minValue, String maxValue)
if (minValue == null || maxValue == null)
return false;
try
m_minValue = Double.valueOf(minValue);
m_maxValue = Double.valueOf(maxValue);
catch (NumberFormatException nfe)
return false;
m_rangeSet = true;
return m_rangeSet;
} // setRange
* Set and check DisplayType
* @param displayType display type
public void setDisplayType (int displayType)
m_displayType = displayType;
if (!DisplayType.isNumeric(displayType))
m_displayType = DisplayType.Number;
m_format = DisplayType.getNumberFormat(displayType);
m_text.setDocument (new MDocNumber(displayType, m_format, m_text, m_title));
} // setDisplayType
* Set ReadWrite
* @param value value
public void setReadWrite (boolean value)
if (m_text.isReadWrite() != value)
m_text.setReadWrite(value);
if (m_button.isReadWrite() != value)
m_button.setReadWrite(value);
// Don't show button if not ReadWrite
if (m_button.isVisible() != value)
m_button.setVisible(value);
} // setReadWrite
* IsReadWrite
* @return true if rw
public boolean isReadWrite()
return m_text.isReadWrite();
} // isReadWrite
* Set Mandatory (and back bolor)
* @param mandatory mandatory
public void setMandatory (boolean mandatory)
m_text.setMandatory(mandatory);
} // setMandatory
* Is it mandatory
* @return true if mandatory
public boolean isMandatory()
return m_text.isMandatory();
} // isMandatory
* Set Background
* @param color color
public void setBackground(Color color)
m_text.setBackground(color);
} // setBackground
* Set Background
* @param error error
public void setBackground (boolean error)
m_text.setBackground(error);
} // setBackground
* Set Foreground
* @param fg foreground
public void setForeground(Color fg)
m_text.setForeground(fg);
} // setForeground
* Set Editor to value
* @param value value
public void setValue(Object value)
log.finest("Value=" + value);
if (value == null)
m_oldText = "";
else
m_oldText = m_format.format(value);
// only set when not updated here
if (m_setting)
return;
m_text.setText (m_oldText);
m_initialText = m_oldText;
m_modified = false;
} // setValue
* Property Change Listener
* @param evt event
public void propertyChange (PropertyChangeEvent evt)
if (evt.getPropertyName().equals(org.compiere.model.MField.PROPERTY))
setValue(evt.getNewValue());
} // propertyChange
* Return Editor value
* @return value value (big decimal or integer)
public Object getValue()
if (m_text == null || m_text.getText() == null || m_text.getText().length() == 0)
return null;
String value = m_text.getText();
// return 0 if text deleted
if (value == null || value.length() == 0)
if (!m_modified)
return null;
if (m_displayType == DisplayType.Integer)
return new Integer(0);
return Env.ZERO;
if (value.equals(".") || value.equals(",") || value.equals("-"))
value = "0";
try
Number number = m_format.parse(value);
value = number.toString(); // converts it to US w/o thousands
BigDecimal bd = new BigDecimal(value);
if (m_displayType == DisplayType.Integer)
return new Integer(bd.intValue());
if (bd.signum() == 0)
return bd;
return bd.setScale(m_format.getMaximumFractionDigits(), BigDecimal.ROUND_HALF_UP);
catch (Exception e)
log.log(Level.SEVERE, "Value=" + value, e);
if (m_displayType == DisplayType.Integer)
return new Integer(0);
return Env.ZERO;
} // getValue
* Return Display Value
* @return value
public String getDisplay()
return m_text.getText();
} // getDisplay
* Get Title
* @return title
public String getTitle()
return m_title;
} // getTitle
* Plus - add one.
* Also sets Value
* @return new value
public Object plus()
Object value = getValue();
if (value == null)
if (m_displayType == DisplayType.Integer)
value = new Integer(0);
else
value = Env.ZERO;
// Add
if (value instanceof BigDecimal)
value = ((BigDecimal)value).add(Env.ONE);
else
value = new Integer(((Integer)value).intValue() + 1);
setValue(value);
return value;
} // plus
* Minus - subtract one, but not below minimum.
* Also sets Value
* @param minimum minimum
* @return new value
public Object minus (int minimum)
Object value = getValue();
if (value == null)
if (m_displayType == DisplayType.Integer)
value = new Integer(minimum);
else
value = new BigDecimal(minimum);
setValue(value);
return value;
// Subtract
if (value instanceof BigDecimal)
BigDecimal bd = ((BigDecimal)value).subtract(Env.ONE);
BigDecimal min = new BigDecimal(minimum);
if (bd.compareTo(min) < 0)
value = min;
else
value = bd;
else
int i = ((Integer)value).intValue();
i--;
if (i < minimum)
i = minimum;
value = new Integer(i);
setValue(value);
return value;
} // minus
* Action Listener
* @param e event
public void actionPerformed (ActionEvent e)
log.config(e.getActionCommand());
if (ValuePreference.NAME.equals(e.getActionCommand()))
if (MRole.getDefault().isShowPreference())
ValuePreference.start (m_mField, getValue());
return;
if (e.getSource() == m_button)
m_button.setEnabled(false);
String str = startCalculator(this, m_text.getText(), m_format, m_displayType, m_title);
m_text.setText(str);
m_button.setEnabled(true);
try
fireVetoableChange (m_columnName, m_oldText, getValue());
catch (PropertyVetoException pve) {}
m_text.requestFocus();
} // actionPerformed
* Key Listener Interface
* @param e event
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
* Key Listener.
* - Escape - Restore old Text
* - firstChange - signal change
* @param e event
public void keyReleased(KeyEvent e)
log.finest("Key=" + e.getKeyCode() + " - " + e.getKeyChar()
+ " -> " + m_text.getText());
// ESC
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
m_text.setText(m_initialText);
m_modified = true;
m_setting = true;
try
if (e.getKeyCode() == KeyEvent.VK_ENTER) // 10
fireVetoableChange (m_columnName, m_oldText, getValue());
fireActionPerformed();
else // indicate change
fireVetoableChange (m_columnName, m_oldText, null);
catch (PropertyVetoException pve) {}
m_setting = false;
} // keyReleased
* Focus Gained
* @param e event
public void focusGained (FocusEvent e)
if (m_text != null)
m_text.selectAll();
} // focusGained
* Data Binding to MTable (via GridController.vetoableChange).
* @param e event
public void focusLost (FocusEvent e)
// log.finest(e.toString());
// APanel - Escape
if (e.getOppositeComponent() instanceof AGlassPane)
m_text.setText(m_initialText);
return;
try
fireVetoableChange (m_columnName, m_initialText, getValue());
fireActionPerformed();
catch (PropertyVetoException pve) {}
} // focusLost
* Invalid Entry - Start Calculator
* @param jc parent
* @param value value
* @param format format
* @param displayType display type
* @param title title
* @return value
public static String startCalculator(Container jc, String value,
DecimalFormat format, int displayType, String title)
log.config("Value=" + value);
BigDecimal startValue = new BigDecimal(0.0);
try
if (value != null && value.length() > 0)
Number number = format.parse(value);
startValue = new BigDecimal (number.toString());
catch (ParseException pe)
log.info("InvalidEntry - " + pe.getMessage());
// Find frame
Frame frame = Env.getFrame(jc);
// Actual Call
Calculator calc = new Calculator(frame, title,
displayType, format, startValue);
AEnv.showCenterWindow(frame, calc);
BigDecimal result = calc.getNumber();
log.config( "Result=" + result);
calc = null;
if (result != null)
return format.format(result);
else
return value; // original value
} // startCalculator
* Set Field/WindowNo for ValuePreference
* @param mField field
public void setField (MField mField)
m_mField = mField;
if (m_mField != null
&& MRole.getDefault().isShowPreference())
ValuePreference.addMenu (this, popupMenu);
} // setField
* Remove Action Listner
* @param l Action Listener
public void removeActionListener(ActionListener l)
listenerList.remove(ActionListener.class, l);
} // removeActionListener
* Add Action Listner
* @param l Action Listener
public void addActionListener(ActionListener l)
listenerList.add(ActionListener.class, l);
} // addActionListener
* Fire Action Event to listeners
protected void fireActionPerformed()
int modifiers = 0;
AWTEvent currentEvent = EventQueue.getCurrentEvent();
if (currentEvent instanceof InputEvent)
modifiers = ((InputEvent)currentEvent).getModifiers();
else if (currentEvent instanceof ActionEvent)
modifiers = ((ActionEvent)currentEvent).getModifiers();
ActionEvent ae = new ActionEvent (this, ActionEvent.ACTION_PERFORMED,
"VNumber", EventQueue.getMostRecentEventTime(), modifiers);
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2)
if (listeners==ActionListener.class)
((ActionListener)listeners[i+1]).actionPerformed(ae);
} // fireActionPerformed
} // VNumberIf getValue() returns null, you need to trace the execution of the code and figure out which sequence of code is leading to the return of null. This method looks complex - a lot of if statements. If you do not have a debugger, put System.out.println statements inside the method to figure out what's going on.
-
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 get the value from a JavaScript and send the same to Java file?
Hi.
How to get the value from a JavaScript (this JS is called when an action invoked) and send the value from the JS to a Java file?
Thanks and regards,
Leslie VYes, I am trying with web application.
In the below code, a variable 'message' carries the needed info. I would like to send this 'message' variable with the 'request'.
How to send this 'message' with and to the 'request'?
Thanks for the help :-)
The actual JS code is:
function productdeselection()
var i=0;
var j=0;
var deselectedproduct = new Array(5);
var message = "Are you sure to delete Product ";
mvi=document.forms[0].MVI;
mei=document.forms[0].MEI;
lpi=document.forms[0].LPI;
if(null != mvi)
++i;
if(null != mei )
++i;
if(null != lpi)
++i;
if(null != mvi && mvi.checked)
deselectedproduct[++j]="MVI?";
if(null != mei && mei.checked)
deselectedproduct[++j]="GAP?";
if(null != lpi && lpi.checked)
deselectedproduct[++j]="LPI?";
if( 0!=j)
if(i!=j)
for (x=0; x<deselectedproduct.length; x++)
if(null != deselectedproduct[x])
message =message+ "-" +deselectedproduct[x];
alert(message);
else
//alert(" You cannot remove all products!");
return false;
return true;
}
Maybe you are looking for
-
One doubt in VL03N transaction/
Hi All, I have one doubt in VL03N transaction.I am an ABAPer.I don't iknow much about the SD process.My SD consultant has changed the Ship-To-Party addressin customer master but it is not reflecting in the document in VL03N.But when I see i
-
How do I export my library of Raw files to jpegs for use in a windows system?
So we just returned from vacation in Belize and I have over 1300 raw images in an aperture library. I need to export all of these images in jpeg format, onto a flash drive, so my wife can easily view them on her windows machine. How can I do this?
-
Why do my wireless HD movie downloads always error and take 6-hours on a DSL service?
-
Removing leading spaces for type P variable
Hi, I am declaring the 2 variables as type P. The below code was working fine, But our client, wants to remove the leading spaces for these variables, v_lower(16) TYPE p DECIMALS 2, v_upper(16) TYPE p DECIMALS 2. v_lower = i_plmk-
-
Your information could not be saved at this time even when its over 13.?
help me