Validations in Swings

How to deal with validations in Swings?

Please be more specific. Your question was a vague as "how to handle rain while driving in cars?"

Similar Messages

  • TextField Validation in swings

    Hello friends,
    i got a problem. i am doing textfield validation using KeyListener.
    i can able to detect the keys except Tab key.
    When i am pression TAB key the KeyListener is not catching the event.
    Actually validation should be in such a way that,
    in account number field if i press anyotherkeys otherthan numeric ,del,backspace keys it should not allow to enter.
    also it has to give error if user tries to move from that field without entering anydata by pressing TAB or Mouse.
    Here exactly getting problem with focus.
    Please give your advise
    thanks in advance
    regards
    shashi

    TextField Validation in swingsOk, you know its a Swing question, so it should be posting in the Swing forum.
    if i press anyotherkeys otherthan numeric ,del,backspace keys it should not allow to enter.You should be using a JFormattedTextField
    it has to give error if user tries to move from that field without entering anydata You could try an InputVerifier.

  • Need a Effective Design Pattern for Different Validation methods ???

    Hi All,
    I am having different validation methods with separate functions. I like to know the Best and Effective Design Pattern to do this.
    for example
    validateUserId()
    validatePassword()
    validateAuthentication()
    validateSession()
    validateConnection()
    .... etc......
    Can anybody help me to solve this?
    Thanks,
    J.Kathir

    Hi there - is this the kind of thing you wanted?.
    This structure has served me well. There is quite a lot to it and lots you need to infer but you should be able to work it out!
    It works for EJB & swing etc (I believe)..
    It doesn't use exceptions to return validation messages.
    It doesn't use lots of little objects. The code is very explicit & pretty simple.
    public class PersonValidator
    Person myData;
    public PersonValidator() {
    //personId will be 0 and we are in nsert mode
    myData = new Person();
    public PersonValidator(long personId) {
    //personId will have a value and we are in update mode
    myData = PersonDb.getPerson(personId);
    // =================================Single field validation
    // =================================For swing apps to call - not over network.
    // =================================Use validateData method
    public String validateDateOfBirth(String dataOfBirthStr) {
    String msg = "";
    msg = validateDateStr(dataOfBirthStr);
    if (!msg.equals("")) return msg;
    public String validateSurname(String surname) {
    String msg = "";
    if (surname.equals("")) return "surname must be entered";
    //=============================================Cross Validation
    public List crossValidateAndSave(boolean saveData) {
    String msg = "";
    List valerrs = new ArrayList();
    if (surname.equals("Collins") && dateOfBirth.compareTo("???")) {
    List.add("Candidate is lying about their age. Please enter a realistic Date of birth");
    if (valerrs.size() == 0) {
    if (saveData()) {
    personDb.saveData(myData);
    // =========================To validate across the netwrok this lets you
    // pass all the data in 1 go & receive multiple messages in reply.
    // AN EJB can delegate to this code or this code could be in the EJB.
    // @param stopAtFirstMessage flag allow efficiency if app ccan't handle multiple validation
    // erros at a time.
    // @param saveData flag allows validation without saving - allows for confirm message.
    // @param EditPersonGuiData - What the user types in. Numeric data & dates can be
    // in Strings. Using struts this could be the formBean.
    public List validateData(EditPersonGuiData inputData, boolean stopAtFirstMessage, boolean saveData) {
    String msg = "";
    List valerrs = new ArrayList();
    msg = validateDateOfBirth(inputData.dateOfBirth);
    if (!msg.equals("")) valerrs.add(msg);
    if (stopAtFirstMessage) return valerrs;
    valerrs = crossValidateAndSave()
    return valerrs;
    }

  • How to protect read-only data in Swing app from tampering?

    First off I am new to cryptography and trying to find the best approach for a problem.
    We have a Swing application that uses xml-based template files to display complex forms and validate data entry. Based on the size and complexity of the forms it was deemed better to have a distributed stand-alone application instead of a web-based solution. However, we want to ensure users do not tamper with the template rules in order to pass the validation checks. All of the xml-based template files are distributed within a single jar file.
    The first thought was to build a list of check-sums of the template files and to compare the template to the approariate check-sum from within the list before loading a template. This would prevent the more casual user from tampering with the file but not someone knowledgeable in check-sum who could recalculate the CRC and update the list after making changes.
    Another thought was to use a private key to encrypt the CRC list before distribution and a public key to decrypt it during execution with the keys maintained in a keystore. However, once again, an adventurous user could weed through the obfuscated code to determine the password to the keystore, create a new keystore with the same password and use its private key to regenerate the CRC list from altered templates.
    I feel like there must be a simpler approach that will provide a bullet prove implementation. Any suggestions?

    I think you have to re-think your design.
    Whether you use Java, C#,C or C++ a hacker can look through the binary (class file, exe file etc) and after working out what is happening he can modify your code.
    It is my opinion that your best bet is to use client/server but even with that you cannot keep any private data or code on the client.
    You will still have to think about 'man-in-the-middle' and 'spoof site' attacks.

  • Can not launch swing application from Java Web Start 1.6.0_37

    I have a dynamic generated jnlp file from a serlvet. When I used Java Web Start to start the swing application, it failed. The exception showed
    com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://xxxx.xx.com:9080/dilpipweb/Test-1.0-SNAPSHOT.jar
         at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
         at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
         at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
         at java.util.concurrent.FutureTask.run(Unknown Source)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    I used janela to validate the generated jnlp file. It was valid. I also checked the tomcat access log, it showed that the Test-1.0-SNAPSHOT.jar file was accessed correctly (with a 200 return code).
    Can anyone help me what was the problem?
    Thanks,

    Hi.
    I got a different problem. My Corba application works in JRE 1.6, but doesn't works in JRE 1.5.X. I got an unexpected error and my console shows:
    getSubjectX500Principal NoSuchMethodError: java.lang NoSuchMethodError
    #### Java Web Start Error:
    #### null
    Can you help me?

  • Is this a bug in Swing in JDK1.6/JDK1.7 but not in JDK1.5?

    I have an application for which GUI was developed in Java Swing JDK1.5.I am planning to upgrade the JDK to JDK1.6 but doing so produces problem for me.
    Problem Statement : If I open few dialogs(say 10) and dispose them and than call method 'getOwnedWindows()' , it returns 0 in JDK1.5 but returns 10 in JDK1.6. As in JDK1.6 it returns 10, my algorithm to set focus is not working correctly as it is able to find invlaid/disposed dialogs and try to set the focus on it but not on the correct and valid dialog or component because algorithm uses getOwnedWindows() to get the valid and currently open dialog.
    Can anyone suggest me the workaround to avoid this problem in JDK1.6?
    Following piece of code can demonstrate the problem.
    Custom Dialog Class :
    import javax.swing.JDialog;
    import java.awt.event.ActionListener;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import java.awt.event.ActionEvent;
    public class CustomDialog extends JDialog implements ActionListener {
        private JPanel myPanel = null;
        private JButton yesButton = null;
        private JButton noButton = null;
        private boolean answer = false;
        public boolean getAnswer() { return answer; }
        public CustomDialog(JFrame frame, boolean modal, String myMessage) {
         super(frame, modal);
         myPanel = new JPanel();
         getContentPane().add(myPanel);
         myPanel.add(new JLabel(myMessage));
         yesButton = new JButton("Yes");
         yesButton.addActionListener(this);
         myPanel.add(yesButton);     
         noButton = new JButton("No");
         noButton.addActionListener(this);
         myPanel.add(noButton);     
         pack();
         setLocationRelativeTo(frame);
         setVisible(true);
         //System.out.println("Constrtuctor ends");
        public void actionPerformed(ActionEvent e) {
         if(yesButton == e.getSource()) {
             System.err.println("User chose yes.");
             answer = true;
             //setVisible(false);
         else if(noButton == e.getSource()) {
             System.err.println("User chose no.");
             answer = false;
             //setVisible(false);
        public void customFinalize() {
             try {
                   finalize();
              } catch (Throwable e) {
                   e.printStackTrace();
    }Main Class:
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JButton;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.ActionEvent;
    import java.awt.FlowLayout;
    import java.awt.Window;
    public class TestTheDialog implements ActionListener {
        JFrame mainFrame = null;
        JButton myButton = null;
        JButton myButton_2 = null;
        public TestTheDialog() {
            mainFrame = new JFrame("TestTheDialog Tester");
            mainFrame.addWindowListener(new WindowAdapter() {
                    public void windowClosing(WindowEvent e) {System.exit(0);}
            myButton = new JButton("Test the dialog!");
            myButton_2 = new JButton("Print no. of owned Windows");
            myButton.addActionListener(this);
            myButton_2.addActionListener(this);
            mainFrame.setLocationRelativeTo(null);
            FlowLayout flayout = new FlowLayout();
            mainFrame.setLayout(flayout);
            mainFrame.getContentPane().add(myButton);
            mainFrame.getContentPane().add(myButton_2);
            mainFrame.pack();
            mainFrame.setVisible(true);
        public void actionPerformed(ActionEvent e) {
            if(myButton == e.getSource()) {
                   System.out.println("getOwnedWindows 1 " + mainFrame.getOwnedWindows().length);
                 createMultipleDialogs();
                int i = 0;
                   for (Window singleWindow : mainFrame.getOwnedWindows()) {
                        System.out.println("getOwnedWindows " + i++ + " "
                                  + singleWindow.isShowing() + " "
                                  + singleWindow.isVisible() + " " + singleWindow);
                   System.out.println("getOwnedWindows 2 " + mainFrame.getOwnedWindows().length);
                //System.gc();
                   System.out.println("getOwnedWindows 3 " + mainFrame.getOwnedWindows().length);
                //System.gc();
                   System.out.println("getOwnedWindows 4 " + mainFrame.getOwnedWindows().length);
            } else if (myButton_2 == e.getSource()) {
                   System.out.println("getOwnedWindows now: " + mainFrame.getOwnedWindows().length);
         public void createMultipleDialogs() {
              for (int a = 0; a < 10; a++) {
                   CustomDialog myDialog = new CustomDialog(mainFrame, false,
                             "Do you like Java?");
                   myDialog.dispose();
                   myDialog.customFinalize();
        public static void main(String argv[]) {
            TestTheDialog tester = new TestTheDialog();
    }Running the above code gives different output for JDK1.5 and JDK1.6
    I would appreciate your help in this regards.
    Thanks

    Fix your algorithm to check if the windows are displayable/showing instead of assuming they are?

  • AWT to SWING conversion - i am so lost!!!

    Hi,
    i am hoping somebody's expertise can help me. i am still relatively new to java and have created this class in java which has an AWT gui, that enables a user to click a "load" button, which the user can then select the jpeg they want to load and the class loads the picture in the canvas. Once i had created it i realised that i actually need to do it in SWING, but the problem is that i dont know how to convert this AWT class to a SWING based class. I have included the code below, and would really appreciate it if somebody can show me how to convert my code so that it is in SWING instead.
    Thank you for your help.
    kind regards,
    Very Confused One
    --------------------------START OF CODE [ImageDicer.java] --------------------------
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.util.*;
    public class ImageDicer extends Frame
    public static void main(String[] args)
    String fileName = "default";
    if (args.length > 0) fileName = args[0];
    new ImageDicer(fileName);
    private static final String kBanner = "ImageDicer v1.0";
    public ImageDicer(String fileName)
    super(kBanner);
    createUI();
    loadImage(fileName);
    setVisible(true);
    private Panel mControlPanel;
    private void createUI()
    setFont(new Font("Serif", Font.PLAIN, 12));
    setLayout(new BorderLayout());
    final Label statusLabel = new Label("Welcome to " + kBanner + ".");
    Button loadButton = new Button("Load...");
    loadButton.addActionListener(new ActionListener()
    public void actionPerformed(ActionEvent ae)
    FileDialog fd = new FileDialog(ImageDicer.this);
    fd.show();
    if (fd.getFile() == null) return;
    String path = fd.getDirectory() + fd.getFile();
    loadImage(path);
    mControlPanel = new Panel();
    mControlPanel.add(loadButton);
    mControlPanel.add(statusLabel);
    add(mControlPanel, BorderLayout.SOUTH);
    addWindowListener(new WindowAdapter()
    public void windowClosing(WindowEvent e)
    dispose();
    System.exit(0);
    private void adjustToImageSize()
    if (!isDisplayable()) addNotify(); // Do this to get valid Insets.
    Insets insets = getInsets();
    int w = mBufferedImage.getWidth() + insets.left + insets.right;
    int h = mBufferedImage.getHeight() + insets.top + insets.bottom;
    h += mControlPanel.getPreferredSize().height;
    setSize(w, h);
    private void center()
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension d = getSize();
    int x = (screen.width - d.width) / 2;
    int y = (screen.height - d.height) / 2;
    setLocation(x, y);
    private BufferedImage mBufferedImage;
    private void loadImage(String fileName)
    Image image = Toolkit.getDefaultToolkit().getImage(fileName);
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(image, 0);
    try { mt.waitForID(0); }
    catch (InterruptedException ie) { return; }
    if (mt.isErrorID(0)) return;
    mBufferedImage = new BufferedImage(image.getWidth(null),
    image.getHeight(null),
    BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = mBufferedImage.createGraphics();
    g2.drawImage(image, null, null);
    adjustToImageSize();
    center();
    validate();
    repaint();
    setTitle(kBanner + ": " + fileName);
    public void paint(Graphics g)
    if (mBufferedImage == null) return;
    Insets insets = getInsets();
    g.drawImage(mBufferedImage, insets.left, insets.top, null);
    --------------------------END OF CODE [ImageDicer.java] --------------------------

    Thanks again for your assistance. The class manages to compile now but there seems to be a bug in the program. Everytime i run the class, the window loads, but the load button does not appear. It only appears when you click aimlessly at the bottom of the window until u luckily click on it. i cannot understand why this is happening :s
    Again i am greatful for your help.
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.io.*;
    import java.util.*;
    import javax.imageio.ImageIO;
    import java.net.*;
    import javax.swing.filechooser.*;
    public class ImageDicer extends JFrame
    String kBanner = "ImageDicer v1.0";
    JPanel mControlPanel;
    JLabel statusLabel;
    JButton loadButton;
    public BufferedImage mBufferedImage;
    public ImageDicer(String fileName)
    { Container pane=getContentPane();
         setTitle(kBanner);
         pane.setLayout(new BorderLayout());
    statusLabel = new JLabel("Welcome to " + kBanner + ".");
    loadButton = new JButton("Load...");
    loadButton.addActionListener(new ActionListener()
    public void actionPerformed(ActionEvent ae)
    {  JFileChooser fd = new JFileChooser();
         int returnVal=fd.showOpenDialog(ImageDicer.this);
              if(returnVal==JFileChooser.APPROVE_OPTION)
                   {if (fd.getSelectedFile() == null)
                              {return;}
                                  File file=fd.getSelectedFile();
                                  String path=(String)file.getPath();
                                  loadImage(path);
    mControlPanel = new JPanel();
         mControlPanel.add(loadButton);
         mControlPanel.add(statusLabel);
    pane.add( BorderLayout.SOUTH, mControlPanel);
    public void adjustToImageSize()
    if (!isDisplayable()) addNotify(); // Do this to get valid Insets.
    Insets insets = getInsets();
    int w = mBufferedImage.getWidth() + insets.left + insets.right;
    int h = mBufferedImage.getHeight() + insets.top + insets.bottom;
    h += mControlPanel.getPreferredSize().height;
    setSize(w, h);
    public void center()
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension d = getSize();
    int x = (screen.width - d.width) / 2;
    int y = (screen.height - d.height) / 2;
    setLocation(x, y);
    public void loadImage(String fileName)
    Image image = Toolkit.getDefaultToolkit().getImage(fileName);
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(image, 0);
    try { mt.waitForID(0); }
    catch (InterruptedException ie) { return; }
    if (mt.isErrorID(0)) return;
    mBufferedImage = new BufferedImage(image.getWidth(null),
    image.getHeight(null),
    BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = mBufferedImage.createGraphics();
    g2.drawImage(image, null, null);
    adjustToImageSize();
    center();
    validate();
    repaint();
    setTitle(kBanner + ": " + fileName);
    public void paint(Graphics g)
    if (mBufferedImage == null) return;
    Insets insets = getInsets();
    g.drawImage(mBufferedImage, insets.left, insets.top, null);
    public static void main(String[] args)
    String fileName = "default";
    if (args.length > 0) fileName = args[0];
    ImageDicer img=new ImageDicer(fileName);
    img.setSize(800,600);
    img.show();
    }

  • Java swing dynamic forms (in a loop)

    Hi All,
    Is it possible to dynamically create forms using java swing? What I mean to ask is that if I have the necessary information in a table, like the label and a corresponding text field, I can loop through and create the required number of fields. If I do it this way and when the users add text, will I not lose the ability to access each JTextField through its own variable? Is this possible? Basically, I need to be able to access each field through its own variable to do some additional validations on the text entered, etc. Please let me know, if it is possible through java swing.
    Any help in this regard is greatly appreciated.
    Thanks.

    mrbean1975 wrote:
    ..Is it possible to dynamically create forms using java swing? If by java swing you mean Java Swing, then yes.

  • Session in java swing??

    Hi friends,
    I need to create session in java swing...
    I have a client running in swing and can access resources in multi-threaded server. I need to validate user using session. But i don't know how to use session.
    User has to login with username & password (authentication verified at server using socket communication).
    If successful the login frame vanishes and other options are displayed. user has a feature that he can send files to other
    user. so i need to use session for security purpose.
    Anyone help me with code
    Edited by: sathya_vn on Apr 20, 2008 5:41 PM

    Anyone help me with the code-----> u got tat wrong..
    I need to know how to use session with java swing. I requested if anyone has such code....
    This is a part of my project .
    Am using MySQL Database to store username and password.
    Cleint side interface has a frame (first frame--frame1) requesting client to provide login information. The login details <username and password> are sent to server. server validates whether the login info are correct or not and return true or false .
    If false the frame1 will show a JOptionPane ... message stating that wrong username or password specified.
    If true i need to create a session and other operations are done after session validation. I am using ssl socket.
    If u want the code then i have post around 300 or more lines..

  • ADF/Swing/JClient application migration problem from 10.1.3.5 to 11.1.1.3

    Hi,
    I am migrating an application from JDev 10.1.3.5 to 11.1.1.3 in order to deploy it to a java 1.6 JVM which is only certified with JDev 11.1.1.3
    No matter what I do the DataBindings.cpx file content is emptied by the IDE, the migration was successful => no errors displayed.
    I tried to solve the problem by doing the following but the file stays empty:
    1) the removing the project from the application and adding it again, migration is done again => FILE EMPTY
    2) adding manually the content in the source file then running XML validation => no errors, I close the file, reopen it and EMPTY AGAIN!
    Your is needed and will be appreciated!
    Thanks
    Fred
    Content of file DataBindings.cpx:
    <?xml version='1.0' encoding='UTF-8' ?>
    <Application xmlns="http://xmlns.oracle.com/adfm/application" id="DataBindings"
    Package="" version="10.1.2.18.73" SeparateXMLFiles="false"
    ClientType="JClient">
    <pageMap/>
    <pageDefinitionUsages>
    <page id="PanelWeventEditParamVO1UIModel"
    path="com.xxx.view.web.PanelWeventEditParamVO1UIModel"/>
    <page id="TogglePanelPrintSizeDpiUIModel"
    path="com.xxx.view.lab.TogglePanelPrintSizeDpiUIModel"/>
    <page id="PanelPhotographerLabROfPhotolabVO1UIModel"
    path="com.xxx.view.web.PanelPhotographerLabROfPhotolabVO1UIModel"/>
    <page id="PanelWeventEditStatusVO1UIModel"
    path="com.xxx.view.web.PanelWeventEditStatusVO1UIModel"/>
    <page id="MDDPhotographerGalleryWelcomeUIModel"
    path="com.xxx.view.web.MDDPhotographerGalleryWelcomeUIModel"/>
    <page id="PanelTranslationCountryRegionLangTableVO1UIModel"
    path="com.xxx.view.system.PanelTranslationCountryRegionLangTableVO1UIModel"/>
    <page id="PanelDestGroupDestRTableVO1UIModel"
    path="com.xxx.view.system.PanelDestGroupDestRTableVO1UIModel"/>
    <page id="PanelWeventEditPackageVO1UIModel"
    path="com.xxx.view.web.PanelWeventEditPackageVO1UIModel"/>
    <page id="PanelSiteTariffPaymentTableVO1UIModel"
    path="com.xxx.view.system.PanelSiteTariffPaymentTableVO1UIModel"/>
    <page id="PanelPhotolabClobFreePage1L1VO1UIModel"
    path="com.xxx.view.web.PanelPhotolabClobFreePage1L1VO1UIModel"/>
    <page id="PhotoWebshopDesktopUIModel"
    path="com.xxx.view.start.PhotoWebshopDesktopUIModel"/>
    <page id="PanelItemGiftKitItemGiftTableVO1UIModel"
    path="com.xxx.view.lab.PanelItemGiftKitItemGiftTableVO1UIModel"/>
    <page id="TabbedFormUIModel"
    path="com.xxx.view.system.TabbedFormUIModel"/>
    <page id="PanelEntityPhotolabVO1UIModel"
    path="com.xxx.view.system.PanelEntityPhotolabVO1UIModel"/>
    <page id="PanelAddressVO1UIModel"
    path="com.xxx.view.web.PanelAddressVO1UIModel"/>
    <page id="SiteEventTypesAndTariffsFormUIModel"
    path="com.xxx.view.start.SiteEventTypesAndTariffsFormUIModel"/>
    <page id="PanelSiteVO1UIModel"
    path="com.xxx.view.system.PanelSiteVO1UIModel"/>
    <page id="PanelSiteBonusTypeVO1UIModel"
    path="com.xxx.view.system.PanelSiteBonusTypeVO1UIModel"/>
    <page id="PanelWeventAccountFileUploaderUIModel"
    path="com.xxx.view.web.PanelWeventAccountFileUploaderUIModel"/>
    <page id="PanelLabelWhereVO1UIModel"
    path="com.xxx.view.system.PanelLabelWhereVO1UIModel"/>
    <page id="PanelLabelWhatVO1UIModel"
    path="com.xxx.view.system.PanelLabelWhatVO1UIModel"/>
    <page id="PanelLabelWhoVO1UIModel"
    path="com.xxx.view.system.PanelLabelWhoVO1UIModel"/>
    </pageDefinitionUsages>
    <dataControlUsages>
    <BC4JDataControl Configuration="BaseTablesAMLocal"
    Package="com.xxx.model.system"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"
    id="BaseTablesAMDataControl"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    syncMode="Immediate">
    <Parameters>
    <Parameter name="FactoryClass"
    value="oracle.adf.model.bc4j.DataControlFactoryImpl"/>
    <Parameter name="SupportsFindMode" value="true"/>
    <Parameter name="Configuration" value="BaseTablesAMLocal"/>
    <Parameter name="SupportsTransactions" value="true"/>
    <Parameter name="Package" value="com.xxx.model.system"/>
    <Parameter name="SubType" value="DCBC4J"/>
    <Parameter name="Name" value="BaseTablesAMDataControl"/>
    <Parameter name="id" value="BaseTablesAMDataControl"/>
    </Parameters>
    </BC4JDataControl>
    <BC4JDataControl Configuration="SiteTablesAMLocal"
    Package="com.xxx.model.system"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"
    id="SiteTablesAMDataControl"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    syncMode="Immediate">
    <Parameters>
    <Parameter name="FactoryClass"
    value="oracle.adf.model.bc4j.DataControlFactoryImpl"/>
    <Parameter name="SupportsFindMode" value="true"/>
    <Parameter name="Configuration" value="SiteTablesAMLocal"/>
    <Parameter name="SupportsTransactions" value="true"/>
    <Parameter name="Package" value="com.xxx.model.system"/>
    <Parameter name="SubType" value="DCBC4J"/>
    <Parameter name="Name" value="SiteTablesAMDataControl"/>
    <Parameter name="id" value="SiteTablesAMDataControl"/>
    </Parameters>
    </BC4JDataControl>
    <BC4JDataControl Configuration="SystemViewAMLocal"
    Package="com.xxx.model.system"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"
    id="SystemViewAMDataControl"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    syncMode="Immediate">
    <Parameters>
    <Parameter name="FactoryClass"
    value="oracle.adf.model.bc4j.DataControlFactoryImpl"/>
    <Parameter name="SupportsFindMode" value="true"/>
    <Parameter name="Configuration" value="SystemViewAMLocal"/>
    <Parameter name="SupportsTransactions" value="true"/>
    <Parameter name="Package" value="com.xxx.model.system"/>
    <Parameter name="SubType" value="DCBC4J"/>
    <Parameter name="Name" value="SystemViewAMDataControl"/>
    <Parameter name="id" value="SystemViewAMDataControl"/>
    </Parameters>
    </BC4JDataControl>
    <BC4JDataControl Configuration="PhotolabSetupAMLocal"
    Package="com.xxx.model.lab"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"
    id="PhotolabSetupAMDataControl"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    syncMode="Immediate">
    <Parameters>
    <Parameter name="FactoryClass"
    value="oracle.adf.model.bc4j.DataControlFactoryImpl"/>
    <Parameter name="Configuration" value="PhotolabSetupAMLocal"/>
    <Parameter name="SupportsFindMode" value="true"/>
    <Parameter name="SupportsTransactions" value="true"/>
    <Parameter name="Name" value="PhotolabSetupAMDataControl"/>
    <Parameter name="SubType" value="DCBC4J"/>
    <Parameter name="Package" value="com.xxx.model.lab"/>
    <Parameter name="id" value="PhotolabSetupAMDataControl"/>
    </Parameters>
    </BC4JDataControl>
    <BC4JDataControl Configuration="PhotolabWebAMLocal"
    Package="com.xxx.model.web"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"
    id="PhotolabWebAMDataControl"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    syncMode="Immediate">
    <Parameters>
    <Parameter name="FactoryClass"
    value="oracle.adf.model.bc4j.DataControlFactoryImpl"/>
    <Parameter name="Configuration" value="PhotolabWebAMLocal"/>
    <Parameter name="SupportsFindMode" value="true"/>
    <Parameter name="SupportsTransactions" value="true"/>
    <Parameter name="Name" value="PhotolabWebAMDataControl"/>
    <Parameter name="SubType" value="DCBC4J"/>
    <Parameter name="Package" value="com.xxx.model.web"/>
    <Parameter name="id" value="PhotolabWebAMDataControl"/>
    </Parameters>
    </BC4JDataControl>
    </dataControlUsages>
    </Application>

    Ok it seems I have resolved my problem see end of thread
    Still have following relevant question for an Oracle team member:
    Why is my <pageMap/> empty in my migrated application cpx file?
    => when I create a new ADF Swing application this tag is not empty:
    in new file:
    <pageMap>
    <page path="view.PanelPhotolabVO1" usageId="view_PanelPhotolabVO1PageDef"/>
    </pageMap>
    <pageDefinitionUsages>
    <page id="view_PanelPhotolabVO1PageDef"
    path="view.pageDefs.PanelPhotolabVO1PageDef"/>
    in migrated file:
    <pageMap/>
    <pageDefinitionUsages>
    <page id="PanelWeventEditParamVO1UIModel"
    path="com.photoswing.view.web.PanelWeventEditParamVO1UIModel"/>
    Solution to empty migrated cpx file:
    It seems the migration utility couldn't cope with the BC4JDataControl definitions, so I edited them manually.
    Example of 10.1.3... syntax:
    <dataControlUsages>
    <BC4JDataControl Configuration="BaseTablesAMLocal"
    Package="com.xxx.model.system"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"
    id="BaseTablesAMDataControl"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    syncMode="Immediate">
    <Parameters>
    <Parameter name="FactoryClass"
    value="oracle.adf.model.bc4j.DataControlFactoryImpl"/>
    <Parameter name="SupportsFindMode" value="true"/>
    <Parameter name="Configuration" value="BaseTablesAMLocal"/>
    <Parameter name="SupportsTransactions" value="true"/>
    <Parameter name="Package" value="com.photoswing.model.system"/>
    <Parameter name="SubType" value="DCBC4J"/>
    <Parameter name="Name" value="BaseTablesAMDataControl"/>
    <Parameter name="id" value="BaseTablesAMDataControl"/>
    </Parameters>
    </BC4JDataControl>
    New syntax:
    <BC4JDataControl id="BaseTablesAMDataControl"
    Package="com.xxx.model.system"
    FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"
    SupportsTransactions="true" SupportsFindMode="true"
    SupportsRangesize="true" SupportsResetState="true"
    SupportsSortCollection="true"
    Configuration="BaseTablesAMLocal" syncMode="Immediate"
    ExceptionMode="Immediate"
    xmlns="http://xmlns.oracle.com/adfm/datacontrol"/>
    Tip:
    Do this editing outside JDev with ide closed to avoid crashing it.
    Regards
    Fred

  • Converting swing components into some readable format

    Hello all,
    A requirement for the application I'm writing is for it to email automatically generated reports to various clients. My problem is that I'm not sure what would be the best format to send the reports. The reports are attached to the email and the sent via JavaMail.
    I have 2 modes of thought at this stage:
    1. Convert a Report (Printable Swing component) to HTML and either attach this or embed it in an email. Question here is how do I convert the Report to HTML?
    2. Print the Report using Adobe Distiller. Once the pdf is created, attach it to the email and send. Problem is that it's unlikely that other users of my software have Distiller. Any Swing to PDF packages that anyone knows of?
    To give you some idea of exactly what I'm doing, please look at the following 2 links.
    1. A screen shot of the Report:
    http://www.genepi.waimr.uwa.edu.au/radar/storage/report.jpg
    2. The Report after it's been printed with Distiller:
    http://www.genepi.waimr.uwa.edu.au/radar/storage/report.pdf
    Note: The previous files will be removed from the server in a couple of days.
    Also, I'm open to any other suggestion! So if anyone has a good idea, please post it!
    Thanks,
    Muel.

    Thanks for your reply.No problem. Interesting problem, as a matter of fact.
    Those reports are created dynamically from querying a
    database. A Report itself is a JDialog, the
    content-pane of which uses a custom LayoutManager.
    The LayoutManager controls a Book and decides whether
    or not to add JLabels to the current ReportPage (a
    Printable JPanel), or to create a new ReportPage and
    add them to it.This is where I don't quite agree with your approach. I don't know if you're familiar with the MVC concept because this is typically the issue you're dealing with here. I hope I'm not misinterpreting what you said but it seems you are storing the content of your database query directly in a particular View (a violation of the MVC principle).
    What you need to do is create a true Model which will hold the logic of what your Reports really are. From what I understood with your image, this class should contain member variables such as addresses, a title, funny notes ;) ...
    Displaying your report in a JDialog is all about creating the most appropriate View for that Model. Using a custom document with its own LayoutManager, JLabels... is, IMHO, a very pragmatic, convenient choice. It is not the only possible choice however. What if, in the future, you wanted to allow the user to copy / paste the report outside your application ? What if, you wanted to allow him/her to edit it prior to printing it?
    Your other requirements involve a printable version of your report and one that can be sent by email. It turns out that HTML is a good pick. Personally, I once had to print HTML and the advices I found at http://www.fawcette.com/javapro/2002_12/online/print_kgauthier_12_10_02/ were quite precious (paging is nicely handled). Moreover, sending html in a mail is piece of cake.
    All it comes down to is how to produce that HTML. Forget about my suggestion of creating a StyledDocument. It might work but writing HTML directly is much faster and easier. The only real constraint here is that the produced HTML should be 3.2 valid. In your case, this serialization should be conducted on the Model, NOT on the View.
    I forgot to mention that once you'll have produced that "html report writer" class, you'll have to reconsider using a JTextPane for your Report display JDialog.

  • Validation on a text field

    i want to put a validation on a text field such that only numeric values can be entered in that text field.
    how should i go about it??

    In particular you can set a MaskFormatter on the JFormattedTextField. See the Swing tutorial section about JFormattedTextFields .

  • What Swing UI framework is the best?

    I am looking for a Swing UI framework that will do the following:
    1. Render Swing UI in the client browser ( I think this is most likely done by Applet).
    2. handle all event back on the server, including validating user input, button/mouse click, etc.
    3. As compliant to open standard as possible
    4. In terms of the technology, as mature as possible
    5. possibly support PLAF for better GUI interface
    6. Prefer good documentation for easy development
    Note that I don't want the user to download new update everything I update my application logic on the server side. It doesn't matter if it is open source or not, please list all the good ones that you can think of.
    I found SwingML, but don't know if it is good.
    Thank you!

    Roxio Toast Titanium.

  • Return to the cell after data validation in JTable

    Hi,
    I am implementing an editable JTable. I want the focus or selection return to the current editing cell when the user inputing a wrong format data. I can catch the validation error and pop up a error message to user. But I can not return the focus or selection to the editing cell.
    If anyone has already solved this problem, please give me your solution.
    Thank you!
    I have tried:
    1.
    In tableChanged(TableModelEvent e) method:
    int row = e.getFirstRow();
    int column = e.getColumn();
    Object data = newJTable.getValueAt(row, column);
    if(!validation(data)) // return true if validation OK
    editFailed = true;//class variable
    previousRow = row;//class variable
    previousCol = column;//class variable
    Add a focus listener to the table and implement the focus listener's focusLost method with:
    if(validationFailed)
    table.editCellAt(previousRow, previousCol);
    This does move the focus to the editing cells if you want to continue to edit the table.
    Problems are
    If you move the focus out of the table, the wrong date will be in the table or not edited.
    The selection color was shown on the next cell where you pointed your mouse to after you leave the editing cells.
    2. I have also tried to use:
    in the above focusLost method
    table.clearSelection();
    table.editCellAt(previousRow, previousCol);
    table.setRowSelectionInterval(previousRow, previousRow);
    table.setColumnSelectionInterval(previousCol, previousRow);
    But it did not change the selection.
    Shaolong

    This is the fix for the above problem.
    Basically we need to handle both mouse/keyboard actions on our own.
    This code returns the control to errorCell..
    /* TableCellValidator class */
    /* The class basically validates the input entry in a cell and */
    /* pops up a JOptionPane if its an invalid input */
    /* And an OK is clicked on the JOptionPane, the control returns back */
    /* to the same cell */
    /* Basic Idea: The controls Arrow/Tab/mouse clicks are handled by our */
    /* ----------- custom table. Its has been slightly tricky to handle */
    /* mouse clicks, since when you click the next cell, the */
    /* editingrow/editingcol advances. Hence the */
    /* previousrow/previouscol has been captured in the */
    /* setValueAt method. */
    /* To capture Table/Arrow/Numeric Arrow, The keyStrokes(TAB etc)*/
    /* assigned different AbstractionActions to execute like */
    /* validateBeforeTabbingToNextCell */
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class TableCellValidator {
    * Constructor.
    * Basically instantiates the class and sets up the
    * JFrame object and the table.
    public TableCellValidator() {
    JFrame f = new JFrame("JTable test");
    f.getContentPane().add(new JScrollPane(createTable()), "Center");
    f.pack();
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    * A method which created our custom table.
    * The JTable methods processMouseEvent
    * and setValueAt are overridden to handle
    * Mouseclicks.
    * The Tables ActionMap is fed with different
    * AbstractAction classes eg: (validateBeforeTabbingToNextCell)
    * (Scroll down below for the innerclass
    * validateBeforeTabbingToNextCell).
    * So basically when TAB is pressed the stuff present
    * in the validateBeforeTabbingToNextCell's actionPerformed(..)
    * method is performed.
    * So we need to handle all the stuff a TAB does.
    * ie. if a TAB hits the end of the row, we need to increment
    * it to the next Row (if the validation is successful)
    * in the current row etc..
    * @return JTable
    * @see validateBeforeTabbingToNextCell
    * @see validateBeforeShiftTabbingToNextCell
    * @see validateBeforeMovingToNextCell
    * @see validateBeforeMovingDownToCell
    * @see validateBeforeMovingUpToCell
    * @see validateBeforeMovingLeftToCell
    private JTable createTable() {
    JTable table = new JTable(createModel()){
    private int previousRow =0;
    private int previousCol =0;
    * Processes mouse events occurring on this component by
    * dispatching them to any registered
    * <code>MouseListener</code> objects.
    * <p>
    * This method is not called unless mouse events are
    * enabled for this component. Mouse events are enabled
    * when one of the following occurs:
    * <p><ul>
    * <li>A <code>MouseListener</code> object is registered
    * via <code>addMouseListener</code>.
    * </ul>
    * <p>Note that if the event parameter is <code>null</code>
    * the behavior is unspecified and may result in an
    * exception.
    * @param e the mouse event
    * @see java.awt.event.MouseEvent
    * @see java.awt.event.MouseListener
    * @see #addMouseListener
    * @see #enableEvents
    * @since JDK1.1
    protected void processMouseEvent(MouseEvent e) {
    boolean canMoveFocus = true;
    int currentRowAndColumn[] = getCurrentRowAndColumn(this); //we pull the current row and column
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    if ( e.getID() == MouseEvent.MOUSE_PRESSED || e.getID() == MouseEvent.MOUSE_CLICKED) {
    stopCurrentCellBeingEdited(this); //stop the cellbeing edited to grab its value
    final String value = (String)getModel().getValueAt(row,column);
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    SwingUtilities.invokeLater(new Runnable(){
    public void run() {
    JOptionPane.showMessageDialog(null,"Alpha value ="+ value ,"Invalid entry!",JOptionPane.WARNING_MESSAGE);
    changeSelection(previousRow,previousCol, true, true);
    editCellAt(previousRow, previousCol);
    requestFocus(); // or t.getEditorCompo
    if ( canMoveFocus ) {
    super.processMouseEvent(e);
    * The method setValueAt of the JTable is overridden
    * to save the previousRow/previousCol to enable us to
    * get back to the error cell when a Mouse is clicked.
    * This is circumvent the problem, when a mouse is clicked in
    * a different cell, the control goes to that cell and
    * when you ask for getEditingRow , it returns the row that
    * the current mouse click occurred. But we need a way
    * to stop at the previous cell(ie. the cell that we were editing
    * before the mouse click occurred) when an invalid data has
    * been entered and return the focus to that cell
    * @param aValue
    * @param row
    * @param col
    public void setValueAt(Object aValue,int row, int col) {     
    this.previousRow = row;
    this.previousCol = col;
    super.setValueAt(aValue,row,col);
    /* These are the various KeyStrokes like
    ENTER,SHIFT-TAB,TAB,Arrow Keys,Numeric Arrow keys being assigned an Abstract action (key string ) in to the
    inputMap first . Then an Action is assigned in the ActionMap object
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,0) ,"validateBeforeTabbingToNextCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,1) ,"validateBeforeShiftTabbingToNextCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT,0) ,"validateBeforeMovingToNextCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_KP_RIGHT,0) ,"validateBeforeMovingToNextCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN,0) ,"validateBeforeMovingDownToCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_KP_DOWN,0) ,"validateBeforeMovingDownToCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0) ,"validateBeforeMovingDownToCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_UP,0) ,"validateBeforeMovingUpToCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_KP_UP,0) ,"validateBeforeMovingUpToCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT,0) ,"validateBeforeMovingLeftToCell");
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_KP_LEFT,0) ,"validateBeforeMovingLeftToCell");
    table.getActionMap().put("validateBeforeTabbingToNextCell",
    new validateBeforeTabbingToNextCell());
    table.getActionMap().put("validateBeforeShiftTabbingToNextCell",
    new validateBeforeShiftTabbingToNextCell());
    table.getActionMap().put("validateBeforeMovingToNextCell",
    new validateBeforeMovingToNextCell());
    table.getActionMap().put("validateBeforeMovingDownToCell",
    new validateBeforeMovingDownToCell());
    table.getActionMap().put("validateBeforeMovingUpToCell",
    new validateBeforeMovingUpToCell());
    table.getActionMap().put("validateBeforeMovingLeftToCell",
    new validateBeforeMovingLeftToCell());
    table.setPreferredScrollableViewportSize(table.getPreferredSize());
    return table;
    * A table model is created here for 5 rows/5 columns.
    * And the isCellEditable is overridden to return true,
    * indicating that the cell can be edited.
    * So fine tuned control can be done here by saying,
    * the user can be allowed to edit Row 1,3 or 5 only.
    * or column 1 only etc..
    * @return DefaultTableModel
    private DefaultTableModel createModel() {
    DefaultTableModel model = new DefaultTableModel(5, 5) {
    public boolean isCellEditable(int row, int column) {
    return true;
    return model;
    * This method basically returns the currentRow/currentCol value
    * If the current Row/Col is being edited then
    * it returns the getEditingRow/getEditingColumn
    * If its not being edited,
    * it return the getAnchorSelectionIndex of the JTables
    * ListSelectionModel.
    * If the column or row is -1, then it return 0.
    * The first element in the int[] array is the row
    * The second element in the int[] array is the column
    * @param t input a JTable
    * @return int[]
    * @see ListSelectionModel
    * @see JTable
    private int[] getCurrentRowAndColumn(JTable t){
    int[] currentRowAndColum = new int[2];
    int row, column;
    if (t.isEditing()) {
    row = t.getEditingRow();
    column = t.getEditingColumn();
    } else {
    row = t.getSelectionModel().getAnchorSelectionIndex();
    if (row == -1) {
    if (t.getRowCount() == 0) {
    //actually this should never happen.. we need to return an exception
    return null;
    column =t.getColumnModel().getSelectionModel().getAnchorSelectionIndex();
    if (column == -1) {
    if (t.getColumnCount() == 0) {
    //actually this should never happen.. we need to return an exception
    return null;
    column = 0;
    currentRowAndColum[0]=row;
    currentRowAndColum[1]=column;
    return currentRowAndColum;
    * Tbis basically a wrapper method for CellEditors,
    * stopCellEditing method.
    * We need to do this because,
    * for instance we have entered a value in Cell[0,0] as 3
    * and when we press TAB or mouse click or any other relevant
    * navigation keys,
    * ** IF the cell is BEING EDITED,
    * when we do a getValueAt(cellrow,cellcol) at the TableModel
    * level , it would return "null". To overcome this problem,
    * we tell the cellEditor to stop what its doing. and then
    * when you do a getValueAt[cellrow,cellcol] it would
    * return us the current cells value
    * @param t Input a JTable
    * @see CellEditor
    private void stopCurrentCellBeingEdited(JTable t){
    CellEditor ce = t.getCellEditor(); /*this not the ideal way to do..
    since there is no way the CellEditor could be null.
    But a nullpointer arises when trying to work with mouse.. rather than just
    keyboard" */
    if (ce!=null) {
    ce.stopCellEditing();
    * The following Action class handles when a
    * RIGHT ARROW or NUMERIC RIGHT ARROW is pressed.
    * There just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move it to the
    * next Cell.. else take it back to the currentCell
    class validateBeforeMovingToNextCell extends AbstractAction {
    * The following Action class handles when a
    * DOWN ARROW or NUMERIC DOWN ARROW is pressed.
    * There is just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move it to
    * down by one Cell.. else take it back to the currentCell
    * @param e
    public void actionPerformed(ActionEvent e) {
    JTable t = (JTable) e.getSource();
    int currentRowAndColumn[] = getCurrentRowAndColumn(t);
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    stopCurrentCellBeingEdited(t);
    String value = (String)t.getModel().getValueAt(row,column);
    if (value!= null && !value.equals("")) {
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    JOptionPane.showMessageDialog(null,"Please input numeric values at cell[row="+row+","+"col="+column+"]","Invalid Input!!",JOptionPane.WARNING_MESSAGE);
    t.changeSelection(row, column, true, true);
    t.editCellAt(row,column);
    t.getEditorComponent().requestFocus();
    return;
    column++;
    if (column >= t.getColumnCount())
    column = column-1;
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    * The following Action class handles when a
    * DOWN ARROW or NUMERIC DOWN ARROW is pressed.
    * There just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move it to the
    * down by Cell.. else take it back to the currentCell
    class validateBeforeMovingDownToCell extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
    JTable t = (JTable) e.getSource();
    int currentRowAndColumn[] = getCurrentRowAndColumn(t);
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    stopCurrentCellBeingEdited(t);
    String value = (String)t.getModel().getValueAt(row,column);
    if (value!= null && !value.equals("")) {
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    JOptionPane.showMessageDialog(null,"Please input numeric values at cell[row="+row+","+"col="+column+"]","Invalid Input!!",JOptionPane.WARNING_MESSAGE);
    t.changeSelection(row, column, true, true);
    t.editCellAt(row,column);
    t.getEditorComponent().requestFocus();
    return;
    row++;
    if (row >= t.getRowCount())
    row = row - 1;
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    * The following Action class handles when a
    * UP ARROW or NUMERIC UP ARROW is pressed.
    * There just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move the cursor/
    * editable status up by a Cell.. else take it back to the currentCell
    class validateBeforeMovingUpToCell extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
    JTable t = (JTable) e.getSource();
    int currentRowAndColumn[] = getCurrentRowAndColumn(t);
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    stopCurrentCellBeingEdited(t);
    String value = (String)t.getModel().getValueAt(row,column);
    if (value!= null && !value.equals("")) {
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    JOptionPane.showMessageDialog(null,"Please input numeric values at cell[row="+row+","+"col="+column+"]","Invalid Input!!",JOptionPane.WARNING_MESSAGE);
    t.changeSelection(row, column, true, true);
    t.editCellAt(row,column);
    t.getEditorComponent().requestFocus();
    return;
    row--;
    if (row <0)
    row = 0;
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    * The following Action class handles when a
    * LEFT ARROW or NUMERIC LEFT ARROW is pressed.
    * There just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move the cursor/
    * editable status up by a Cell.. else take it back to the currentCell
    class validateBeforeMovingLeftToCell extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
    JTable t = (JTable) e.getSource();
    int currentRowAndColumn[] = getCurrentRowAndColumn(t);
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    stopCurrentCellBeingEdited(t);
    String value = (String)t.getModel().getValueAt(row,column);
    if (value!= null && !value.equals("")) {
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    JOptionPane.showMessageDialog(null,"Please input numeric values at cell[row="+row+","+"col="+column+"]","Invalid Input!!",JOptionPane.WARNING_MESSAGE);
    t.changeSelection(row, column, true, true);
    t.editCellAt(row,column);
    t.getEditorComponent().requestFocus();
    return;
    column--;
    if (column <0)
    column = 0;
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    * The following Action class handles when a TAB is pressed.
    * There just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move the cursor/
    * editable status up by a Cell.. else take it back to the currentCell
    class validateBeforeTabbingToNextCell extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
    JTable t = (JTable) e.getSource();
    int currentRowAndColumn[] = getCurrentRowAndColumn(t);
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    stopCurrentCellBeingEdited(t);
    String value = (String)t.getModel().getValueAt(row,column);
    if (value!= null && !value.equals("")) {
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    JOptionPane.showMessageDialog(null,"Please input numeric values at cell[row="+row+","+"col="+column+"]","Invalid Input!!",JOptionPane.WARNING_MESSAGE);
    t.changeSelection(row, column, true, true);
    t.editCellAt(row,column);
    t.getEditorComponent().requestFocus();
    return;
    column++;
    int rows = t.getRowCount(), columns = t.getColumnCount();
    while (row < rows) {
    while (column < columns) {
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    column++;
    row++;
    column = 0;
    row = 0;
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    * The following Action class handles when a SHIFT TAB is pressed.
    * There just a basic checking for Numeric values
    * (Integer.parseInt) inside the code.
    * When validation is successfull, we need to move the cursor/
    * editable status up by a Cell.. else take it back to the currentCell
    class validateBeforeShiftTabbingToNextCell extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
    JTable t = (JTable) e.getSource();
    int currentRowAndColumn[] = getCurrentRowAndColumn(t);
    int row = currentRowAndColumn[0];
    int column = currentRowAndColumn[1];
    stopCurrentCellBeingEdited(t);
    String value = (String)t.getModel().getValueAt(row,column);
    if (value!= null && !value.equals("")) {
    try {
    Integer.parseInt(value);
    } catch (NumberFormatException nfe) {
    JOptionPane.showMessageDialog(null,"Please input numeric values at cell[row="+row+","+"col="+column+"]","Invalid Input!!",JOptionPane.WARNING_MESSAGE);
    t.changeSelection(row, column, true, true);
    t.editCellAt(row,column);
    t.getEditorComponent().requestFocus();
    return;
    column--;
    int rows = t.getRowCount(), columns = t.getColumnCount();
    while ((row < rows) && (row >= 0)) {
    while ((column < columns) && (column >= 0)) {
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    column--;
    row--;
    column = columns - 1;
    row = rows - 1;
    if (t.isCellEditable(row, column)) {
    t.changeSelection(row, column, true, true);
    t.editCellAt(row, column);
    if ((t.getEditingRow() == row)
    && (t.getEditingColumn() == column)) {
    t.requestFocus();
    return;
    public static void main(String[] args) {
    new TableCellValidator();

  • Multi-tier Swing Application

    Hi,
    I'm currently in the planning stages of an application that will use swing, be deployed on a Websphere Application Express V5 server, and access a postgresql database. The application will need to display/add/modify data as well as do complex calculations, validations, etc. All database requests need to be made from the application server rather than the client. I'm having trouble figuring out what approach to take. I'm reading up on Swing, but what do I need to use to handle the data. Ejb's are not supported on our application server. Should I use RMI, servlets, or javabeans or a combination. Is there anything else I should consider. Any help would be appreciated. Thank you.

    You seem determined to use Swing.
    I am not sure that it is necessarily a good idea. Yes Swing allows you to create a native look and feel, but what else is it giving you? If you want to do a lot of local processing such as a CAD program, then fair enough. But Swing also give you the security risk that people can view and change your Swing code as it will likely be on the client machines. This means you will have to consider how to protect passwords.
    A servlet could communicate with Swing but is more usually in communication with a browser. This seems a little more secure. You will be able to design forms similar to the sun forum and display data. Also because the code is on the server, you can update everyones code easily.
    However if this is your first big project, you should buy in some experience, as suggested previously.

Maybe you are looking for

  • Flash Player 12.0.0.77 Issue

    I'm running Windows 7 Home Premium, IE 11.0.9600.1621, Flash Player 12.0.0.77.  When I run a video of say, Yahoo, I get sound but not picture.  I've tried online suggestions such as enabling the Shockwave Flash Object.  Nothing has worked.  Any sugge

  • Update to Acrobat 9.4.5 breaks selecting multiple document thumbnails

    After this update we can no longer select multiple document thumbnails with ctrl + right mouse click in the Pages view.  Our workaround is to uninstall and reinstall Acrobat 9 without any updates. 

  • WRT54G Question on how far does the signal reach?

    Question on how far does the signal reach? Like from the system box at home base, could you take the laptop what distance from it? Miles? Or jus a short distance? And what distance if anyone knows? Message Edited by White_Devil on 04-09-2008 08:21 PM

  • [URGENT]JMS Stuck at   connectionFactory.createQueueConnection();

    I am developing an OSB project and it has to insert a message on a OC4J Queue. I've been testing on *10.1.3.3.0* version and it workd fine. But the real version used is *10.1.3.0.0* and I don't know why but the request just gets stuck.... nothing hap

  • Toggle for commentary track

    I have a special features menu on my dvd, with on and off buttons for the commentary track. Right now, when you select one of them, the video track begins playing, from the beginning, with the correct audio stream selected. So it works. But on most n