Please help me =(

I'm not native english speaker, therefore some things might be not clear here

I have 2 separate files: Main.java and Open.java

inside main.java there is a GUI and it has a JTextArea) where i want to show text (variable) called from open.java

in Main.java i have (i took out only important codes, real one is much longer):

//textarea
final JTextArea textarea = new JTextArea();
textarea.setEditable(false);
JScrollPane textScrollPane = new JScrollPane(textarea);
textScrollPane.setPreferredSize(new Dimension(800, 100));

//open function
 private void actionPerformedOnOpen(ActionEvent evt, JTextArea textarea) {
javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
        chooser.addChoosableFileFilter(new FileFilter());
        int option = chooser.showOpenDialog(this);
        if (option == javax.swing.JFileChooser.APPROVE_OPTION) {

String text = new String();
//text = (String)(Open.get(parsedFile));

            java.io.File file = chooser.getSelectedFile();
            if (file == null) return;
            Open readPDBFile = new Open(file.getAbsolutePath());
             textarea.append("Opening: " + file.getName());
             textarea.setText("Testing..."+text);


        }
    }

in Open.java i have a variable which contains some text. i want it to be shown inside the textarea in Main.java like textarea.setText("Testing..."+text); and call variable from Open.java instead of text

i looked all over internet, but couldnt find it helpful.

please please please help meee...

Thank you very much ^^

Oh yes, this is what i have in Open.java :

package pdbviewer;

import org.biojava.bio.structure.io.PDBFileReader;
import org.biojava.bio.structure.Structure;
import org.biojava.bio.structure.GroupIterator;
import org.biojava.bio.structure.Group;
import org.biojava.bio.structure.AminoAcid;
import org.biojava.bio.structure.Chain;
import java.util.Map;

import javax.swing.*;

/**
 *
 * @author ginger
 */
public class Open extends javax.swing.JTextArea{


    public Open(String filename) {



 PDBFileReader pdbreader = new PDBFileReader();

 
 pdbreader.setParseSecStruc(true);

 pdbreader.setAlignSeqRes(true);

 pdbreader.setParseCAOnly(false);

 pdbreader.setAutoFetch(false);



 try{
     Structure struc = pdbreader.getStructure(filename); //i want this

     System.out.println(struc);

     GroupIterator gi = new GroupIterator(struc);

     while (gi.hasNext()){

           Group g = (Group) gi.next();//this

           if ( g instanceof AminoAcid ){
               AminoAcid aa = (AminoAcid)g;
               Map sec = aa.getSecStruc();//and this to be viewed in the textarea in Main.java
               Chain  c = g.getParent();
               System.out.println(c.getName() + " " + g + " " + sec);

        
           }

     }

 } catch (Exception e) {
     e.printStackTrace();
 }



    }
}

There are some texts are being printed out in console, i want them to be called into the textarea in Main.java

Thanks a lot ^^

if you have

class mainclass{

stuff mystuff;
open myopen;

mainclass()
{
mystuff = new stuff();
myopen = new open(mystuff);// we pass a copy of mystuff, its an object so passed by reference.

}
class stuff {

int a;
int b;
int c;
stuff()
{ a=b=c=5;
}
}//end stuff

} // end main class


and open is

class open {
stuff mystuff;

open() { }

open(stuff mystuffpassed)
{
mystuff = mystuffpassed;  // mystuff in open is now linked to stuff
}
}// end class

it has to do with how stuff is passed.

i have a variable like int i=1;

and i pass mystuff(i);

changes to i wont duplicate between teh copies. its pass by value.

pass an object, and you pass by reference so if in one class i do
mystuff.a=6; both copies see this. they share.

Mike

Edited 6 Years Ago by adams161: n/a

You can use Observer-Pattern, i made a quite simple sample which will printing current datetime to console and within relatively same time append same current datetime to an JTextArea, scheduled every 5 seconds, infinitely (till program closed).

/*
 * MyFrame.java
 *
 * Created on Jan 7, 2010, 10:40:13 AM
 */
import java.util.Observable;
import java.util.Observer;

/**
 *
 * @author jaka
 */
public class MyFrame extends javax.swing.JFrame implements Observer {

    /** Creates new form MyFrame */
    public MyFrame() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        outputArea = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText(org.openide.util.NbBundle.getMessage(MyFrame.class, "MyFrame.jLabel1.text")); // NOI18N

        outputArea.setColumns(20);
        outputArea.setRows(5);
        jScrollPane1.setViewportView(outputArea);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 384, Short.MAX_VALUE)
                    .addComponent(jLabel1))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    public void update(Observable o, Object obj) {
        String text = (String) obj;
        outputArea.append(text);
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MyFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea outputArea;
    // End of variables declaration


}

and the Main.java

import java.util.Calendar;
import java.util.Date;
import java.util.Observable;
import java.util.Timer;
import java.util.TimerTask;

/**
 *
 * @author jaka
 */
public class Main extends Observable {

    private Timer timer = new Timer();
    private String currentTimeString = null;

    public Main() {
    }

    public void startInfiniteTimer() {
        TimerTask task = new TimerTask() {

            @Override
            public void run() {
                Date current = Calendar.getInstance().getTime();
                currentTimeString = "Current date: " + current.toString() + "\n";
                System.out.print(currentTimeString);
                setChanged();
                notifyObservers(currentTimeString);
            }
        };
        timer.schedule(task, 0, 5000); //every 5 seconds
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                Main main = new Main();
                MyFrame frame = new MyFrame();
                frame.setVisible(true);
                main.addObserver(frame);
                main.startInfiniteTimer();
            }
        });
    }

}

See how easy it is, just make the Class/Object you want to observe extends Observable, and another Class as it's observer.

p.s:
Sorry it the MyFrame.java is too long, i am using Netbeans GUI builder to build the frame.

Please help me =(

I'm not native english speaker, therefore some things might be not clear here

I have 2 separate files: Main.java and Open.java

inside main.java there is a GUI and it has a JTextArea) where i want to show text (variable) called from open.java

in Main.java i have (i took out only important codes, real one is much longer):

//textarea
final JTextArea textarea = new JTextArea();
textarea.setEditable(false);
JScrollPane textScrollPane = new JScrollPane(textarea);
textScrollPane.setPreferredSize(new Dimension(800, 100));

//open function
 private void actionPerformedOnOpen(ActionEvent evt, JTextArea textarea) {
javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
        chooser.addChoosableFileFilter(new FileFilter());
        int option = chooser.showOpenDialog(this);
        if (option == javax.swing.JFileChooser.APPROVE_OPTION) {

String text = new String();
//text = (String)(Open.get(parsedFile));

            java.io.File file = chooser.getSelectedFile();
            if (file == null) return;
            Open readPDBFile = new Open(file.getAbsolutePath());
             textarea.append("Opening: " + file.getName());
             textarea.setText("Testing..."+text);


        }
    }

in Open.java i have a variable which contains some text. i want it to be shown inside the textarea in Main.java like textarea.setText("Testing..."+text); and call variable from Open.java instead of text

i looked all over internet, but couldnt find it helpful.

please please please help meee...

Thank you very much ^^

hi i have gone through u r code its good but not the best u can declare the variable in main instead of another n use it as an global and more often access specifiers are differently used in this n if u want u can look at dynamic billboard

hi i have gone through u r code its good but not the best u can declare the variable in main instead of another n use it as an global and more often access specifiers are differently used in this n if u want u can look at dynamic billboard

No, just no. Suggesting the use of a "global variable" from main.java is probably the worst way possible to go about it. And you need to read this as well: http://www.daniweb.com/forums/faq.php?faq=daniweb_policies#faq_keep_it_clean

All that is needed is a public method on the "open" class that returns the data you want to display: open.getTheText()

hi please say the output for this pseudo
employee
{
int empid;
}
class A
{
public static void main(String args[])
{
Hashset s=new Hashset();
for(int i=0;i<10;i++)
{
for(intj=0;j<10;j++)
emp(1);
s.add(empid);
}
}
s.o.p("count"+empid);

This topic is 6 months old and maybe you meant to start a new post. I think its at the bottom of the forum page, start new post/topic.

Mike

This question has already been answered. Start a new discussion instead.