GUI--- jTextArea
i am using a gui frame and a jTextArea on the frame. I need to ask the user a question and put it in the jTextArea using the append() method. But how to I get their input that they write in the jTextArea and store it in a String variable?
Ah, so you do know how to use your login to post again. I wonder why you don't post some kind of follow-up on your other thread. Usually I shy away from talking to people who ask me a question, I answer them, and they don't even have the common courtesy to say "thanks".
http://forum.java.sun.com/thread.jspa?threadID=613781
Similar Messages
-
Problem Writing to text area reposted forgot my code
I have 3 seperate Classes Main, GUI, and FileChange.
The Main class runs and constructs the GUI class. The GUI class builds my application. Then the program stops until a user action is committed. If the user opens a file the FileChange class gets the selected file and manipulates it. I tokenize the stings in the file and send the info i want back over to the JTextArea in the GUI class but nothing prints out. The program compiles but informaiton is not written to the text area, why?
The file change makes a call like such:
g.outputText(genre, composer, artist, albumTitle, trackNum, songTitle, count);
the the method that is called does this:
mainText.append(gnr+" ");
if(count==1){mainText.append(cmp+" ");}
mainText.append(art+" "+alb+" "+trk +" "+st.substring(3)+".mp3");
I dont understand why I cant append text to the JTextArea. I can place text in the TextArea during constructor initialization of the GUI class but not when i call the method that appends text from the FileChange class.The Code is posted below
Thanks in advance for your help
p
Main Class//////////////////////////////////////////////////
package musicmatch_library_test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
public class Main implements WindowListener
public Main()
super();
public static void main(String args[])
GUI f = new GUI();
f.setSize(800,600);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
public void windowActivated(WindowEvent e)
public void windowClosed(WindowEvent e)
public void windowClosing (WindowEvent e)
GUI f = new GUI();
f.quitApplication( );
public void windowDeactivated(WindowEvent e)
public void windowDeiconified(WindowEvent e)
public void windowIconified(WindowEvent e)
public void windowOpened(WindowEvent e)
GUI Class
package musicmatch_library_test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.io.*;
class GUI extends JFrame implements ActionListener, FilenameFilter
private JMenuBar menuBar = new JMenuBar(); // Creating The MenuBar
protected JFileChooser dialogBox = new JFileChooser(); //create load dialog box
private JMenu fileMenu, editMenu, helpMenu; // Menu Options
protected JMenuItem fileOpen, fileSaveAs, fileExit; // File Option
private JMenuItem editDelete; //Edit Options
private JCheckBoxMenuItem wordWrap;
private JMenuItem helpQuestions, helpAbout; // Help Options
private JTextArea mainText = new JTextArea();
//public FileChange changeFile = new FileChange();
public GUI()
super("Library Converter v.001"); //Title bar text
getContentPane().setLayout(new BorderLayout());
this.setJMenuBar(menuBar); // Add menu Bar to the screen
initFileMenu(); // goes to the file menu method
initEditMenu(); // " " edit menu method
initHelpMenu(); // " " help menu method
initTextArea(); // " " text area setup
System.setProperty("line.separator", "\r\n");
public boolean accept(File dir, String name)
System.out.println("accept():");
if (name.endsWith(".txt")) return true;
return false;
public void actionPerformed(ActionEvent e)
if(e.getSource() == fileExit) //if statement to close app
quitApplication();
}//end if (e.getSource() == fileExit)
if(e.getSource() == fileSaveAs)
FileChange changeFile = new FileChange();
changeFile.fileSaveAs();
}//end if (e.getSource() == fileSaveAs)
if(e.getSource() == fileOpen) //if statement to open a file
openFile();
}//end if (e.getSource() == fileOpen)
if(e.getSource() == wordWrap) //if statement to turn word wrap on/off
if(wordWrap.getState() == false)
mainText.setLineWrap(false);
mainText.setLineWrap(false);
}//end if (wordWrap.getState() == false)
else if(wordWrap.getState() == true)
mainText.setLineWrap(true);
mainText.setLineWrap(true);
}//end else if (wordWrap.getState() == true)
}//end if (e.getSource() == wordWrap)
}//end action performed
private void initEditMenu()
editMenu = new JMenu("Edit"); //Adding Edit to Menu
editMenu.setMnemonic('E');
menuBar.add(editMenu);
wordWrap = new JCheckBoxMenuItem("Word Wrap", false); //adding a word wrap on/off button
wordWrap.addActionListener(this);
wordWrap.setEnabled(true);
editMenu.add(wordWrap);
editDelete = new JMenuItem("Delete"); //adding delete inside the "edit" options
//editDelete.addActionListener(this);
editDelete.setEnabled(false);
editMenu.add(editDelete);
}//intEditMenu
private void initFileMenu()
fileMenu = new JMenu("File"); // Adding File to the menu bar
fileMenu.setMnemonic('F');
menuBar.add(fileMenu);
fileOpen = new JMenuItem("Open"); // Adding open to the Menu
fileOpen.setMnemonic('O');
fileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
fileOpen.addActionListener(this);
fileOpen.setEnabled(true);
fileMenu.add(fileOpen);
fileSaveAs = new JMenuItem("Save File As"); // Save file info
fileSaveAs.setMnemonic('S');
fileSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
fileSaveAs.addActionListener(this);
fileSaveAs.setEnabled(false);
fileMenu.add(fileSaveAs);
fileExit = new JMenuItem("Exit"); //Exit Item
fileExit.setMnemonic('X');
fileExit.addActionListener(this);
fileMenu.add(fileExit);
private void initHelpMenu()
helpMenu = new JMenu("Help"); //adding help menu
helpMenu.setMnemonic('H');
menuBar.add(helpMenu);
helpQuestions = new JMenuItem("Questions"); // Questions Item
helpQuestions.addActionListener(this);
helpQuestions.setEnabled(false);
helpMenu.add(helpQuestions);
helpMenu.addSeparator();
helpAbout = new JMenuItem("About"); //addind About stuff
helpAbout.addActionListener(this);
helpAbout.setEnabled(false);
helpMenu.add(helpAbout);
private void initTextArea()
mainText.setEditable(false);
mainText.setVisible(true);
JScrollPane scrollPane = new JScrollPane(mainText);
getContentPane().add(scrollPane, "Center");
public void openFile()
{//method to start the opening of a file
FileChange changeFile = new FileChange();
//fileSaveAs.setEnabled(true);
mainText.setText("Please Be Patient While Opening The File");
dialogBox.setCurrentDirectory(new File("C:/Documents and Settings/Administrator/My Documents/Java Stuff/Personal Projects")); //set default path
dialogBox.showOpenDialog(this); //opens the dialog box to select a file
changeFile.fileManip(dialogBox.getSelectedFile().getPath());//get the directory plus the file and pass it to fname in displayTab1()
}// end openFile()
public void outputText(String gnr, String cmp, String art, String alb, String trk, String st, int count)
mainText.append(gnr+" ");
if(count==1){mainText.append(cmp+" ");}
mainText.append(art+" "+alb+" "+trk +" "+st.substring(3)+".mp3");
public void quitApplication( )
setVisible(false );
dispose( );
System.exit(0);
FileChange Class
package musicmatch_library_test;
import java.io.*;
import java.util.*;
import javax.swing.*;
class FileChange extends GUI
JTextArea fcText = new JTextArea();
public FileChange()
super();
public void fileManip(String fname)
{//this mehtod will edit and display and save certain info in tab1s display area
GUI g = new GUI();
try
BufferedReader inFile = new BufferedReader(new FileReader(fname));
PrintWriter outStream = new PrintWriter (new FileWriter(fileSaveAs())); //dialogBox.getSelectedFile()
String line = inFile.readLine();
fcText.setText("");
int count;
while(line != null)
StringTokenizer cut = new StringTokenizer(line, "\\");
count = cut.countTokens();
if(count == 6 || count ==7)
String drive = cut.nextToken();
String folder = cut.nextToken();
String genre = cut.nextToken();
String composer=null;
if(count ==7)
composer = cut.nextToken();
count = 1;
String artist = cut.nextToken();
String albumTitle = cut.nextToken();
String trackNum = cut.nextToken("\\ -");
String songTitle = cut.nextToken(".");
g.outputText(genre, composer, artist, albumTitle, trackNum, songTitle, count);
outStream.print(genre+" ");
if(count==1){outStream.print(composer+" ");}
outStream.println(artist+" "+albumTitle+" "+trackNum +" "+songTitle.substring(3)+".mp3");
count = 0;
}//if(count == 6)
line = inFile.readLine();
}//end while(line != null)
outStream.close();
inFile.close();
}//end try
catch(FileNotFoundException e)
g.fileSaveAs.setEnabled(false);
fcText.setText("NO File will be open, File Not Found");
}//end catch (FileNotFoundException e)
catch(IOException e)
g.fileSaveAs.setEnabled(false);
fcText.setText("NO File will be open");
System.exit(1);
}//end catch (IOException e)
catch(NoSuchElementException e)
fcText.setText("No MoreTokens");
}//end FileManip()
public File fileSaveAs()
{//method for saving a file
GUI a = new GUI();
a.dialogBox.setCurrentDirectory (new File("C:/Documents and Settings/Administrator/My Documents/Java Stuff/Personal Projects"));
a.dialogBox.showSaveDialog(a.getContentPane());
//File toSaveAs = a.dialogBox.getSelectedFile();
return a.dialogBox.getSelectedFile();
}//end fileSaveAs()For instance in your main you can have:
public class Main implements WindowListener {
public static GUI f;
public Main(){
super();
public static void main(String args[]) {
f = new GUI();
f.setSize(800,600);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
//Window Adapter Stuff...By the way if you use the WindowAdapter
//You don't have to stub out the methods you don't use, just write
//the ones you do use, that is what makes adapters better then
//listeners...
public static GUI getGUIInstance() {
return f;
//then in the fileChange methods that need to use the GUI do:
GUI g = Main.getGUIInstance();Steve -
A emergent problem, please help as soon as possible!!!!
I have a list, and I want to add it to my GUI JTextArea. could you
the list:
for (int i = 0; i < goods.length; i++)
if (goods.getName().length() >= 8)
System.out.println("\t\t" + goods[i].getName() + "\t" + goods[i].getQuantity() + "\t" + goods[i].getSellPrice() + "\t" + goods[i].getBuyPrice());
else
System.out.println("\t\t" + goods[i].getName() + "\t\t" + goods[i].getQuantity() + "\t" + goods[i].getSellPrice() + "\t" + goods[i].getBuyPrice());
this loop will print a list, now I need to put this list in my JTextArea, what method should I use to do it.
Thank you very muchyou should have a JTextArea on your GUI I suppose?
Are you using one class for your program?
private JTextArea txt = new JTextArea();
for (int i = 0; i < goods.length; i++) {
if (goods.getName().length() > = 8) {
System.out.println("stuff");
JTextArea.append("stuff");
else {
System.out.println("other stuff");
JTextArea.append("other stuff");
}correct me if I'm wrong but I don't think this is what you are looking for.
Please post your code or send the .java file(s) to [email protected]
Maybe then, I'll understand. -
GUI. puting JScrollPanel in JTextArea component
Hi. how can I pus JScrollPanel in JTextArea component rigt. that JScrollPanel would be wisable and usable???
JTextArea is in JPanel(Layout = null), Jvanes is in Container
Container con = getContentPane();
pagr = new JPanel();
con.add(pagr);JTextArea has to be in pagr.
maybe someone has any suggestions?
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
private void jbInit() throws Exception {
pagr.setLayout(null);
txt.setBounds(new Rectangle(10, 10, 475, 440));
filtr.setBackground(UIManager.getColor("Button.disabledForeground"));
filtr.setBounds(new Rectangle(490, 375, 185, 75));
pasir.setBackground(new Color(230, 230, 230));
pasir.setSelectionBackground(Color.blue);
pasir.setSelectionForeground(Color.orange);
pasir.setBounds(new Rectangle(490, 10, 185, 355));
txt.setBackground(new Color(230, 230, 230));
txt.setSelectedTextColor(Color.red);
txt.setSelectionColor(Color.lightGray);
pagr.setBackground(Color.lightGray);
scrl = new JScrollPane(txt);
scrl.setEnabled(true);
scrl.setVisible(true);
pagr.add(txt);
pagr.add(filtr);
pagr.add(pasir);
}txt i JTextArea component.
not working, also Designer Mesages box throws:
Failed to create live value from JScrollPane scrl = null;: null
Failed to create live visual subcomponent (scrl) as javax.swing.JScrollPane; creating a red component in its placeI'm using null Layout that I would be able to pusall
components where I want. prefering size umeanfiltr.setBounds(new Rectangle(490, 375, 185,
75));
and JScrollPane is subComponent of txt, atleast I want to to describe it that way.Did you miss my comment? You are adding text to the
scrollpane but you are not adding the scroll pane
anywhere. Also I would highly recommend that you use
layout managers.
JTextArea txt = new JTextArea(13,30);
JScrollPane scrl = null;
JList pasir = new JList();
JButton filtr = new JButton("Filtruoti");
JPanel pagr;
//skiped some of code
public Pradzia() {
Container con = getContentPane();// <--geting container
pagr = new JPanel();
con.add(pagr);//adding JPanel to con
//skiped some of code
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
private void jbInit() throws Exception {
pagr.setLayout(null);
txt.setBounds(new Rectangle(10, 10, 475, 440));
filtr.setBackground(UIManager.getColor("Button.disabledForeground"));
filtr.setBounds(new Rectangle(490, 375, 185, 75));
pasir.setBackground(new Color(230, 230, 230));
pasir.setSelectionBackground(Color.blue);
pasir.setSelectionForeground(Color.orange);
pasir.setBounds(new Rectangle(490, 10, 185, 355));
txt.setBackground(new Color(230, 230, 230));
txt.setSelectedTextColor(Color.red);
txt.setSelectionColor(Color.lightGray);
pagr.setBackground(Color.lightGray);
scrl = new JScrollPane(txt);// <--ading JScrollPane to txt(JTextArea)
scrl.setEnabled(true);
scrl.setVisible(true);
pagr.add(txt);// <--adding txt to pagr(JPanel)
pagr.add(filtr);
pagr.add(pasir);
or I don't understand something. -
JTextArea.setText("String ") not updating the GUI.
Hi,
When i tried to update the JTextArea with a new String it is not replacing the string in the TextArea.
If I try to print the content by retrieving the data in the TextArea using JTextArea.getText() it is showing the latest string set to the JTextArea.
What might be the problem?
DPHere is the code. I am calling the displayMessage() from onMessage() method.
private void displayMessage(String str){
textArea.setText(str);
textArea.revalidate();
System.out.println("Message Received from QUE: "+ textArea.getText());
public void onMessage(Message msg) {
try {
if (msg instanceof TextMessage) {
msgText = ((TextMessage)msg).getText();
} else {
msgText = msg.toString();
msgText = msgText.trim();
System.out.println(msgText );
displayMessage(msgText); -
How to refresh a JPanel/JTextArea
My main problem is that I don't know how to correctly refresh a JTextArea in an Applet. I have an Applet with 2 internal frames. Each frame is comprised of a JPanel.
The first internal frame calls the second one as shown below:
// Set an internal frame for Confirmation and import the Confirm class into it//
Container CF = nextFrame.getContentPane();
//<Jpanel>
confirmation = new Confirmation( );
CF.add ( confirmation, BorderLayout.CENTER );
mFrameRef.jDesktopPane1.add(nextFrame,JLayeredPane.MODAL_LAYER);
currentFrame.setVisible(false); // Hide this Frame
nextFrame.setVisible(true); // Show Next Frame/Screen of Program
confirmation (Jpanel) has a JTextArea in it. When it's called the first time it displays the correct information (based on choices from the first frame). If a user presses the back button (to return to first frame) and changes something, it doesn't refresh in the JTextArea when they call the confirmation(Jpanel) again. I used System.out.println (called right after jtextareas code), and it shows the info has indeed changed...I guess I don't know how to correctly refresh a JTextArea in an Applet. Here is the relevent code for the 2nd Internal Frame (confirmation jpanel):
// Gather Info to display to user for confirmation //
final JTextArea log = new JTextArea(10,35);
log.setMargin(new Insets(5,5,5,5));
log.setEditable(false);
log.append("Name: " storeInfoRef.getFirstName() " "
+storeInfoRef.getLastName() );
log.append("\nTest Project: " +storeInfoRef.getTestProject() );
JScrollPane logScrollPane = new JScrollPane(log);Here is the relevant code that I am having the problem with...
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class Confirmation extends JPanel {
// Variables declaration
private StoreInfo storeInfoRef; // Reference to StoreInfo
private MFrame mFrameRef; // Reference to MFrame
private Progress_Monitor pmd; // Ref. to Progress Monitor
private JLabel ConfirmMessage; // Header Message
private JButton PrevButton; // Navigation Button btwn frames
private JInternalFrame prevFrame, currentFrame; // Ref.to Frames
// End of variables declaration
public Confirmation(MFrame mFrame, StoreInfo storeInfo) {
mFrameRef = mFrame; // Reference to MFrame
storeInfoRef = storeInfo; // Reference to Store Info
prevFrame = mFrameRef.FileChooserFrame; // Ref. to Previous Frame
currentFrame = mFrameRef.ConfirmationFrame; // Ref. to this Frame
initComponents();
// GUI for this class //
private void initComponents() {
ConfirmMessage = new JLabel();
PrevButton = new JButton();
UploadButton = new JButton();
setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints1;
ConfirmMessage.setText("Please confirm that the information "
+"entered is correct");
add(ConfirmMessage, gridBagConstraints1);
// Gather Info to display to user for confirmation //
final JTextArea log = new JTextArea(10,35);
log.setMargin(new Insets(5,5,5,5));
log.setEditable(false);
log.append("Name: " storeInfoRef.getFirstName() " "
+storeInfoRef.getLastName() );
log.append("\nTest Project: " +storeInfoRef.getTestProject() );
log.append("\nTest Director: " +storeInfoRef.getTestDirector() );
log.append("\nTest Location: " +storeInfoRef.getTestLocation() );
log.append("\nDate: " +storeInfoRef.getDate() );
String fileOutput = "";
Vector temp = new Vector( storeInfoRef.getFiles() );
for ( int v=0; v < temp.size(); v++ )
fileOutput += "\n " +temp.elementAt(v); // Get File Names
log.append("\nFile: " +fileOutput );
// log.repaint();
// log.validate();
// log.revalidate();
JScrollPane logScrollPane = new JScrollPane(log);
System.out.println("Name: " storeInfoRef.getFirstName() " " +storeInfoRef.getLastName() );
System.out.println("Test Project: " +storeInfoRef.getTestProject() );
System.out.println("Test Director: " +storeInfoRef.getTestDirector() );
System.out.println("Test Location: " +storeInfoRef.getTestLocation() );
System.out.println("Date: " +storeInfoRef.getDate() );
System.out.println("File: " +fileOutput );
// End of Gather Info //
add(logScrollPane, gridBagConstraints1);
PrevButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
PrevButtonMouseClicked(evt);
PrevButton.setText("Back");
JPanel Buttons = new JPanel();
Buttons.add(PrevButton);
add(Buttons, gridBagConstraints1);
// If User Presses 'Prev' Button //
private void PrevButtonMouseClicked(java.awt.event.MouseEvent evt) {
try
currentFrame.setVisible(false); // Hide this Frame
prevFrame.setVisible(true); // Show Next Frame/Screen of Program
catch ( Throwable e ) // If A Miscellaneous Error
System.err.println( e.getMessage() );
e.printStackTrace( System.err );
}// End of Confirmation class -
How to hide the Form Feed char in JTextArea
We have reports (written in C) that are being displayed in a JTextArea.
In our old app, the Form Feed character (ASCII 12) was invisible naturally without having to code around it. In a JTextArea, it appears as a "[]" character. Does anyone know how to make this character invisible to the JTextArea? Removing it is not an option, as it is needed for it's print routine.
I've been searching these forums and the web all morning with no luck.Not sure how the Form Feed character worksIt lets the printer know that a new page is to be started at that point.
Does it always appear with the New Line character?Usually but not always.
Thanks for the reply. It's more involved than just printing standard lines of text, so perhaps I should have been more clear.
The C report already has pagination built in from when it was run from our legacy GUI. In other words, each report knows how many chars wide and how many lines down each page will be. It is different for each report, but they all hover around 150 chars wide and 60 lines down per page, since they are all presented to the user (and printed) in landscape.
In the C code: at the end of each report line a "\n" is appended. At the end of each page, an ASCII 12 character is appended. A header is at the top of each page (different for each report, but usually 2 or 3 lines) that shows the page # and other info.
So, as you are viewing the report, you would see page 1 header, some report content, page 2 header, some more report content, page 3 header, etc. as you scroll down.
So now if you view it in Java: if the user wishes to print, the report is sent to our ReportPrinter class, who tokenizes the report based on "\f" and makes a ReportPage object (implements Printable) for each token. Each ReportPage is then appened to a java.awt.print.Book object, who in turn is sent to the PrinterJob.
Given that the report already has his pages figured out and has a form feed char at the end of each page, the report comes in to the JTextArea with [] chars preceding each page header (approximately every 60th line, depending on the report).
I tried using a JTextPane, but no luck. It was also much slower reading in the report. I just want the textpane to not display the non-printable characters ("\f" in this case). -
Hai to all,
I am having a problem with GUI in applets
My first class extends a JPanel named A_a
import javax.swing .*;
import java.awt.*;
import java.awt.event.*;
public class A_a extends JPanel
JButton jb;
JTextArea text;
public A_a()
setLayout(new FlowLayout());
jb=new JButton("Click me");
//add(jb);
text=new JTextArea(5,20);
add(text);
public void text_appendText(String aa)
System.out.println("I AM IN A_a");
text.append(aa);
text.revalidate();
revalidate();
/*public static void main(String ags[])
A_a a = new A_a();
JFrame frame=new JFrame();
frame.getContentPane().add(a);
frame.pack();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
frame.setSize(200,200);
frame.show();
and then I am using other class B_b which is an applet carries a exitsing panel (A_a) inside it .
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class B_b extends JApplet
public A_a a;
public void init()
a=new A_a();
getContentPane().add(a);
public void text_appendText(String aa)
final String aaa =aa;
new Thread(new Runnable()
public void run()
a=new A_a();
a.setBackground(new java.awt.Color(255,200,200));
System.out.println("I AM IN B_b");
a.text.append(aaa);
a.text.revalidate();
getContentPane().remove(a);
resize(500,500);
}).start();
and the I am using the second applet C_c in which by performing a button action the old panel A_a should get removed and replace the new panel D_a (which is not here )in the applet B_b with all other components(namely button , text fields etc)
import javax.swing .*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
public class C_c extends JApplet implements ActionListener
JButton jbt;
JTextArea jta;
public void init()
getContentPane().setLayout(new FlowLayout());
jbt=new JButton("Click me");
jbt.addActionListener(this);
getContentPane().add(jbt);
jta=new JTextArea(5,20);
getContentPane().add(jta);
public void actionPerformed(ActionEvent ae)
Enumeration e = getAppletContext().getApplets();
Applet applets = null;
while(e.hasMoreElements())
applets=(Applet)e.nextElement();
if ( applets instanceof B_b)
System.out.println("I AM CLASS C_c");
((B_b)applets).text_appendText(jta.getText());
((B_b)applets).remove());
((B_b)applets).getContentPane().add(D_d);
both the applets C_c and B_b are in same browser page
How can i achive that pls help .Just to make the code readable...
import javax.swing .*;
import java.awt.*;
import java.awt.event.*;
public class A_a extends JPanel
JButton jb;
JTextArea text;
public A_a()
setLayout(new FlowLayout());
jb=new JButton("Click me");
//add(jb);
text=new JTextArea(5,20);
add(text);
public void text_appendText(String aa)
System.out.println("I AM IN A_a");
text.append(aa);
text.revalidate();
revalidate();
/*public static void main(String ags[])
A_a a = new A_a();
JFrame frame=new JFrame();
frame.getContentPane().add(a);
frame.pack();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
frame.setSize(200,200);
frame.show();
}and then I am using other class B_b which is an applet carries a exitsing panel (A_a) inside it .
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class B_b extends JApplet
public A_a a;
public void init()
a=new A_a();
getContentPane().add(a);
public void text_appendText(String aa)
final String aaa =aa;
new Thread(new Runnable()
public void run()
a=new A_a();
a.setBackground(new java.awt.Color(255,200,200));
System.out.println("I AM IN B_b");
a.text.append(aaa);
a.text.revalidate();
getContentPane().remove(a);
resize(500,500);
}).start();
}and the I am using the second applet C_c in which by performing a button action the old panel A_a should get removed and replace the new panel D_a (which is not here )in the applet B_b with all other components(namely button , text fields etc)
import javax.swing .*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
public class C_c extends JApplet implements ActionListener
JButton jbt;
JTextArea jta;
public void init()
getContentPane().setLayout(new FlowLayout());
jbt=new JButton("Click me");
jbt.addActionListener(this);
getContentPane().add(jbt);
jta=new JTextArea(5,20);
getContentPane().add(jta);
public void actionPerformed(ActionEvent ae)
Enumeration e = getAppletContext().getApplets();
Applet applets = null;
while(e.hasMoreElements())
applets=(Applet)e.nextElement();
if ( applets instanceof B_b)
System.out.println("I AM CLASS C_c");
((B_b)applets).text_appendText(jta.getText());
((B_b)applets).remove());
((B_b)applets).getContentPane().add(D_d);
} -
How do I run SQL statements with my GUI ?
Hello,
i created a simple GUI with a status text box on top and a text box on the bottom to type in sql commands. Can somebody help me modify my code so that I can at least run a create table command and give the status of "successful create table" in the top text box?
One other question I have is that I already have a login screen gui that creates the sql connection and that gui calls this gui. Do I have to pass this connection to this new class or not? and if so, how do i do it? thanks again!
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.*;
import java.sql.*;
public class SqlGui extends JFrame {
public SqlGui() {
super("Oracle SQL Application");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JTextArea outputArea = new JTextArea("output here",20, 0);
outputArea.setLineWrap(true);
JScrollPane scrollOutputArea = new JScrollPane(outputArea);
JTextArea inputArea =
new JTextArea("enter commands here",2, 20);
inputArea.setLineWrap(true);
JScrollPane scrollInputArea = new JScrollPane(inputArea);
JPanel buttonPanel = new JPanel();
JButton executeButton = new JButton("Execute Command");
buttonPanel.add(executeButton);
// do work here?
JButton exitButton = new JButton("Exit");
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(
ActionEvent ae) {
dispose();
buttonPanel.add(exitButton);
JPanel sqlPanel = new JPanel(new BorderLayout());
sqlPanel.add(scrollInputArea);
sqlPanel.add(buttonPanel, BorderLayout.SOUTH);
JSplitPane mainsplit =
new JSplitPane(JSplitPane.VERTICAL_SPLIT,
scrollOutputArea, sqlPanel);
getContentPane().add(mainsplit);
setSize(800, 500);
setLocationRelativeTo(null);
setVisible(true);
}Hello,
There are two ways to execute the SQL command in GUI , one by passing the connection object from other scree as specified by you is logic screen (write a constructor which takes connection parameter as input) else create the connection in this present GUI screen also as shown by me.
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.*;
import java.sql.*;
public class SqlGui extends JFrame implements ActionListener{
String url; // url providing the database details
Connection connect;
JTextArea inputArea;
JButton executeButton;
JTextArea outputArea;
public SqlGui() {
super("Oracle SQL Application");
setDefaultCloseOperation(EXIT_ON_CLOSE);
try
url = "jdbc:odbc:dsnName";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// url , userid, pwd of database like scott,tiger
connect = DriverManager.getConnection(url,"userid",
"password");
System.out.println("Connection Sucessful \n") ;
catch (ClassNotFoundException cnfex)
cnfex.printStackTrace();
System.out.println("Connection Failed " + cnfex.toString());
catch (SQLException exp)
System.out.println(exp);
outputArea = new JTextArea("output here",20, 0);
outputArea.setLineWrap(true);
JScrollPane scrollOutputArea = new JScrollPane(outputArea);
inputArea = new JTextArea("enter commands here",2, 20);
inputArea.setLineWrap(true);
JScrollPane scrollInputArea = new JScrollPane(inputArea);
JPanel buttonPanel = new JPanel();
executeButton = new JButton("Execute Command");
executeButton.addActionListener(this);
buttonPanel.add(executeButton); // do work here?
JButton exitButton = new JButton("Exit");
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
dispose();
buttonPanel.add(exitButton);
JPanel sqlPanel = new JPanel(new BorderLayout());
sqlPanel.add(scrollInputArea);
sqlPanel.add(buttonPanel, BorderLayout.SOUTH);
JSplitPane mainsplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, scrollOutputArea, sqlPanel); getContentPane().add(mainsplit);
setSize(800, 500);
setLocationRelativeTo(null);
setVisible(true);
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == executeButton) {
// To clear the fields
create(inputArea.getText());
public static void main(String args[]) {
SqlGui app = new SqlGui();
public void create(String SQLCommand) {
String query = SQLCommand;
outputArea.setText("The Result of Executing the query" + query );
try{
Statement st = connect.createStatement();
st.executeQuery(query);
JOptionPane.showMessageDialog(null,"Command Executed Sucessfully");
catch (SQLException sqlex) {
System.err.println("Unable to Execute Command :");
outputArea.setText("Unable to Execute Command :" +query);
sqlex.printStackTrace();
Hope this sucessfully works for you. -
GUI building difficulties, nested Frames and other stuff
I am currently working on a GUI and I am running into some difficulties. I have created a class which extends JFrame
public class DelFace extends JFrame implements ActionListener, ItemListenerI am instantiating an object of this class from within another object of a different class as follows:
DelFace DelGUI = new DelFace(this,MastFile);The creation of the object takes place within the listener methods of another object:
public void actionPerformed(ActionEvent e)
if(e.getActionCommand().equals("Delete"))
DelFace DelGUI = new DelFace(this,MastFile);
}The class that creates the object that makes this call does not contain the main method. Instead the afore mentioned object is created from a class that extends JFrame
class GUI extends JFrame implements ActionListenerSo the code in it's order of activity is as follows:
It breaks down hardcore at the beginning
public class StartProgram {
private static GUI LauncherGUI;
private static FileOps MastFile;
public static void main(String[] args)
MastFile = new FileOps();
MastFile.fileStatus(); //Create File object &/or file.
MastFile.readFile(); //Read file contents if any.
LauncherGUI = new GUI(StartProgram.MastFile);
}A GUI object is created, - LauncherGUI = new GUI(StartProgram.MastFile);
From here the code differentiates somewhat - FileOperations stem from here as do all code related to the complete construction of the General User Interface.
Specifically my difficulties lie with the GUI, therefore I will present the next peice of code related to the GUI. The following code creates a JFrame and places a whole stack of buttons on it. Included with these buttons are menus. So basically the code creates a menu bar and adds menu items to that bar and so on until a menu similar to that found in any regular program is produced. Also contained on this part of the GUI are the five buttons that are fundemental to the programs operation.
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.EventObject; //Try removing this!!
class GUI extends JFrame implements ActionListener
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private String Path1;
private String Path2;
private String Path3;
private String Path4;
private String Path5;
private FileOps MastFile;
private DataEntryBox EntryBox;
private HelpGUI Instruct;
FrameListener GUIListener = new FrameListener(); //Listener object created.
GUI(FileOps MastFile)
this.MastFile = MastFile; //Make MastFile objects methods available
//to all of LauncherGUI object.
Toolkit tk = Toolkit.getDefaultToolkit(); //intialize the toolkit.
Dimension sSize = tk.getScreenSize(); //determine screen size.
Container c = getContentPane();
GridBagLayout gridbag2 = new GridBagLayout(); //GridBagLayout object
//instantiated.
GridBagConstraints d = new GridBagConstraints();//GridBagConstraints object
//instantiated.
c.setLayout(gridbag2); //Content pane's layout set
//to gridbag object.
d.fill = GridBagConstraints.BOTH; //Make all components fill
//their dispaly areas
//entirely.
d.insets = new Insets(5,1,5,1);
JMenuBar menuBar = new JMenuBar(); //Creates Menubar object called menuBar.
setJMenuBar(menuBar);
JMenu FMenu = new JMenu("File"); //File Menu object instantiated.
FMenu.setMnemonic(KeyEvent.VK_F); //Key that activates File menu...F.
menuBar.add(FMenu); //File Menu added to menuBar object.
JMenuItem NewItem = new JMenuItem("New"); //Creates New sub-menu object.
NewItem.setMnemonic(KeyEvent.VK_N); //Key that activates New sub-
//menu....N.
FMenu.add(NewItem);
NewItem.addActionListener(this); //ActionListner for NewItem added.
//Tutorial Note: Steps involved in creating a menu UI are as follows,
//1). Create an instance of a JMenuBar.
//2). Create an instance of a JMenu.
//3). Add items to the JMenu (not to the JMenuBar).
//Note: It is possible to include the Mnemonic activation key as part of
//the JMenu or JMenuItem constructor. e.g.: JMenuItem NewItem = new JMenu
//Item("New",KeyEvent.VK_N);
JMenuItem DeleteItem = new JMenuItem("Delete");
DeleteItem.setMnemonic(KeyEvent.VK_D);
FMenu.add(DeleteItem);
DeleteItem.addActionListener(this);
JMenuItem ExitItem = new JMenuItem("Exit",KeyEvent.VK_E); //Mnemonic key
//included with constructor method here and from now on.
FMenu.add(ExitItem);
ExitItem.addActionListener(this);
JMenu HMenu = new JMenu("Help");
HMenu.setMnemonic(KeyEvent.VK_H);
menuBar.add(HMenu);
JMenuItem InstructItem = new JMenuItem("Instructions",KeyEvent.VK_I);
HMenu.add(InstructItem);
InstructItem.addActionListener(this);
JMenuItem AboutItem = new JMenuItem("About",KeyEvent.VK_A);
HMenu.add(AboutItem);
AboutItem.addActionListener(this);
button1 = new JButton();
/* The following if statments block first checks to see if the value held in the
String array is equals to null (note: this only occurs when the program is first
started and no data has been written to file). If the array is null then the
buttons text is set to "". If the array value is not null (meaning that the file
already holds data) then the value of the array is checked. If the value equals
the String "null" then button text is set to "", otherwise button text is set to
the relevant array value (a user defined shortcut name). Also the value of each
buttons actionCommand is set to this string value. */
if(MastFile.getFDArray(0) == null)
button1.setText("");
button1.setActionCommand("Link1");
else
if(MastFile.getFDArray(0) != null)
if(MastFile.getFDArray(0).equals("null"))
button1.setText("");
button1.setActionCommand("Link1");
else
button1.setText(MastFile.getFDArray(0));
button1.setActionCommand(MastFile.getFDArray(0));
d.weightx = 0.2; //Specifies horizontal sizing behaviour.
d.weighty = 0.3; //Specifies vertical resizing behaviour.
d.gridx = 0; //c.gridx and c.gridy specify the x,y starting position
d.gridy = 0; //of this label, in regard to column and row respectively.
gridbag2.setConstraints(button1, d);
c.add(button1);
button1.addActionListener(this);
button2 = new JButton();
if(MastFile.getFDArray(2) == null) //If the file contains no contents then..
button2.setText("");
button2.setActionCommand("Link2");
else
if(MastFile.getFDArray(2) != null)
if(MastFile.getFDArray(2).equals("null"))//If the file contains the string
{ //"null" then do as above.
button2.setText("");
button2.setActionCommand("Link2");
else //Set both button text and actionCommand to relevant shortcut name.
button2.setText(MastFile.getFDArray(2));
button2.setActionCommand(MastFile.getFDArray(2));
d.weightx = 0.2; //Specifies horizontal sizing behaviour.
d.weighty = 0.3; //Specifies vertical resizing behaviour.
d.gridx = 1; //c.gridx and c.gridy specify the x,y starting position
d.gridy = 0; //of this label, in regard to column and row respectively.
gridbag2.setConstraints(button2, d);
c.add(button2);
button2.addActionListener(this);
button3 = new JButton();
if(MastFile.getFDArray(4) == null)
button3.setText("");
button3.setActionCommand("Link3");
else
if(MastFile.getFDArray(4) != null)
if(MastFile.getFDArray(4).equals("null"))
button3.setText("");
button3.setActionCommand("Link3");
else
button3.setText(MastFile.getFDArray(4));
button3.setActionCommand(MastFile.getFDArray(4));
d.weightx = 0.2; //Specifies horizontal sizing behaviour.
d.weighty = 0.3; //Specifies vertical resizing behaviour.
d.gridx = 2; //c.gridx and c.gridy specify the x,y starting position
d.gridy = 0; //of this label, in regard to column and row respectively.
gridbag2.setConstraints(button3, d);
c.add(button3);
button3.addActionListener(this);
button4 = new JButton();
if(MastFile.getFDArray(6) == null)
button4.setText("");
button4.setActionCommand("Link4");
else
if(MastFile.getFDArray(6) != null)
if(MastFile.getFDArray(6).equals("null"))
button4.setText("");
button4.setActionCommand("Link4");
else
button4.setText(MastFile.getFDArray(6));
button4.setActionCommand(MastFile.getFDArray(6));
d.weightx = 0.2; //Specifies horizontal sizing behaviour.
d.weighty = 0.3; //Specifies vertical resizing behaviour.
d.gridx = 3; //c.gridx and c.gridy specify the x,y starting position
d.gridy = 0; //of this label, in regard to column and row respectively.
gridbag2.setConstraints(button4, d);
c.add(button4);
button4.addActionListener(this);
button5 = new JButton();
if(MastFile.getFDArray(8) == null)
button5.setText("");
button5.setActionCommand("Link5");
else
if(MastFile.getFDArray(8) != null)
if(MastFile.getFDArray(8).equals("null"))
button5.setText("");
button5.setActionCommand("Link5");
else
button5.setText(MastFile.getFDArray(8));
button5.setActionCommand(MastFile.getFDArray(8));
d.weightx = 0.2; //Specifies horizontal sizing behaviour.
d.weighty = 0.3; //Specifies vertical resizing behaviour.
d.gridx = 4; //c.gridx and c.gridy specify the x,y starting position
d.gridy = 0; //of this label, in regard to column and row respectively.
gridbag2.setConstraints(button5, d);
c.add(button5);
button5.addActionListener(this);
Path1 = MastFile.getFDArray(1); //Load Path variables with path
Path2 = MastFile.getFDArray(3); //details from String Array in
Path3 = MastFile.getFDArray(5); //MastFile object of FileOps class.
Path4 = MastFile.getFDArray(7); //Effectively loading these variables
Path5 = MastFile.getFDArray(9); //with file data.
this.addWindowListener(GUIListener); //Listener registered with Frame.
setLocation(sSize.width*1/2,sSize.height*1/20);
setSize(sSize.width*1/2,sSize.height*1/7);
setTitle("Java QuickLaunch Toolbar");
setVisible(true);
/* The following methods return the ActionCommand and Text Label
String values of the buttons */
public String getButton1Command()
return button1.getActionCommand();
public String getButton2Command()
return button2.getActionCommand();
public String getButton3Command()
return button3.getActionCommand();
public String getButton4Command()
return button4.getActionCommand();
public String getButton5Command()
return button5.getActionCommand();
public String getBt1Text()
return button1.getText();
public String getBt2Text()
return button2.getText();
public String getBt3Text()
return button3.getText();
public String getBt4Text()
return button4.getText();
public String getBt5Text()
return button5.getText();
/* The following methods set the Path, Button and ActionCommand String values. */
public void setPath1(String setPath)
Path1 = setPath;
public void setPath2(String setPath)
Path2 = setPath;
public void setPath3(String setPath)
Path3 = setPath;
public void setPath4(String setPath)
Path4 = setPath;
public void setPath5(String setPath)
Path5 = setPath;
public void setButton1(String setButton)
button1.setText(setButton);
public void setButton2(String setButton)
button2.setText(setButton);
public void setButton3(String setButton)
button3.setText(setButton);
public void setButton4(String setButton)
button4.setText(setButton);
public void setButton5(String setButton)
button5.setText(setButton);
public void setBt1Action(String setAct)
button1.setActionCommand(setAct);
public void setBt2Action(String setAct)
button2.setActionCommand(setAct);
public void setBt3Action(String setAct)
button3.setActionCommand(setAct);
public void setBt4Action(String setAct)
button4.setActionCommand(setAct);
public void setBt5Action(String setAct)
button5.setActionCommand(setAct);
/* actionPerformed methods */
public void actionPerformed(ActionEvent e)
if(e.getActionCommand().equals("New"))
//Create a data entry box.
EntryBox = new DataEntryBox(this,MastFile);
else
if(e.getActionCommand().equals("Delete"))//Example part of interest
DelFace DelGUI = new DelFace(this,MastFile); /// -------- ////
else
if(e.getActionCommand().equals("Exit"))
System.exit(0);
else
if(e.getActionCommand().equals("Instructions"))
Instruct = new HelpGUI();
else
if(e.getActionCommand().equals("About"))
JOptionPane.showMessageDialog(this,"Java QuickLaunch Toolbar created by David "+
"Dartnell.","Programming Credits",1);
else
if(e.getActionCommand().equals(button1.getActionCommand())) //Determine source of event.
if(Path1 == null) //If Path var is a null reference
EntryBox = new DataEntryBox(this,MastFile);//create a data entry box.
else
if(Path1 != null) //If not a null reference then...
if(Path1.equals("null")) //Determine if string is "null".
EntryBox = new DataEntryBox(this,MastFile);
else //If both the reference and the String are not null then run
{ //the relevant command/program.
try
Runtime.getRuntime().exec(new String[]{Path1});
catch(IOException run){}
else
if(e.getActionCommand().equals(button2.getActionCommand()))
if(Path2 == null)
EntryBox = new DataEntryBox(this,MastFile);
else
if(Path2 != null)
if(Path2.equals("null"))
EntryBox = new DataEntryBox(this,MastFile);
else
try
Runtime.getRuntime().exec(new String[]{Path2});
catch(IOException run){}
else
if(e.getActionCommand().equals(button3.getActionCommand()))
if(Path3 == null)
EntryBox = new DataEntryBox(this,MastFile);
else
if(Path3 != null)
if(Path3.equals("null"))
EntryBox = new DataEntryBox(this,MastFile);
else
try
Runtime.getRuntime().exec(new String[]{Path3});
catch(IOException run){}
else
if(e.getActionCommand().equals(button4.getActionCommand()))
if(Path4 == null)
EntryBox = new DataEntryBox(this,MastFile);
else
if(Path4 != null)
if(Path4.equals("null"))
EntryBox = new DataEntryBox(this,MastFile);
else
try
Runtime.getRuntime().exec(new String[]{Path4});
catch(IOException run){}
else
if(e.getActionCommand().equals(button5.getActionCommand()))
if(Path5 == null)
EntryBox = new DataEntryBox(this,MastFile);
else
if(Path5 != null)
if(Path5.equals("null"))
EntryBox = new DataEntryBox(this,MastFile);
else
try
Runtime.getRuntime().exec(new String[]{Path5});
catch(IOException run){}
Something to consider concerning actionListeners:
It must be remembered that String values are in fact objects and as such
they require the equals() method unlike their cousins the primitive data
types (int, float, boolean, byte, short, long and double) which require
the == operator.
*/A comment is placed next to the line of code that is of interest to my problem (///-------////).
When a button is pressed in the menu section that reads "Delete" then an actionCommand event is fired and the program responds by creating a second general user interface.
When DelFace is instantiated in the form of the object called DelGUI I am once again creating an object which extends JFrame. I now have two objects of type JFrame on the screen at once, and I conveniently position one over the top of the other, so to the general user the programs appearance has changed in only very specified ways (i.e.: I have decided to increase the GUI's dimensions in the area of height only and not width). The code that constitutes class DelFace is as follows:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DelFace extends JFrame implements ActionListener, ItemListener
private GUI TkBar; //GUI object.
private FileOps Fops; //File Operations object.
private JCheckBox ckbox1; //Delete shortcut 1.
private JCheckBox ckbox2; //Delete shortcut 2.
private JCheckBox ckbox3; //Delete shortcut 3.
private JCheckBox ckbox4; //Delete shortcut 4.
private JCheckBox ckbox5; //Delete shortcut 5.
private JButton OkBtn; //OK button.
private JButton CnBtn; //Cancel button.
private JOptionPane confirm;
private boolean short1 = false; //Boolean variables indicate whether to
private boolean short2 = false; //delete a shortcut entry. True = delete.
private boolean short3 = false;
private boolean short4 = false;
private boolean short5 = false;
DelFace(GUI TkBar, FileOps Fops)
this.TkBar = TkBar;
this.Fops = Fops;
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension sSize = tk.getScreenSize();
Container dcon = getContentPane();
GridBagLayout gb = new GridBagLayout();
GridBagConstraints bagcon = new GridBagConstraints();
dcon.setLayout(gb);
bagcon.fill = GridBagConstraints.BOTH;
bagcon.gridwidth = GridBagConstraints.REMAINDER;
JLabel TLabel = new JLabel("Delete Wizard",JLabel.CENTER);
TLabel.setFont(new Font("Tahoma",Font.BOLD+Font.ITALIC,32));
bagcon.gridx = 0;
bagcon.gridy = 0;
bagcon.weightx = 1.0; //Take up all the 'x room' in this row.
bagcon.weighty = 0.5; //Take up all the 'y room' in this column.
/* The weightx and weighty values are required otherwise all components will
gravitate toward the center of screen. */
gb.setConstraints(TLabel,bagcon);
dcon.add(TLabel);
JTextArea TxArea = new JTextArea("Tick the box(s) of the shortcut(s)"+
" that you would like to delete and"+
" press the Delete button. Alternatively"+
" press the Cancel button to exit.");
TxArea.setLineWrap(true);
TxArea.setWrapStyleWord(true);
TxArea.setEditable(false);
TxArea.setFont(new Font("Times New Roman",Font.PLAIN,15));
TxArea.setBackground(this.getBackground());
bagcon.gridx = 0;
bagcon.gridy = 1;
gb.setConstraints(TxArea,bagcon);
dcon.add(TxArea);
bagcon.gridwidth = 1;
JPanel Nopan1 = new JPanel();
bagcon.gridx = 0;
bagcon.gridy = 2;
gb.setConstraints(Nopan1,bagcon);
dcon.add(Nopan1);
ckbox1 = new JCheckBox(TkBar.getBt1Text());
bagcon.gridx = 1;
bagcon.gridy = 2;
gb.setConstraints(ckbox1,bagcon);
dcon.add(ckbox1);
ckbox1.addItemListener(this);
ckbox2 = new JCheckBox(TkBar.getBt2Text());
bagcon.gridy = 3;
gb.setConstraints(ckbox2,bagcon);
dcon.add(ckbox2);
ckbox2.addItemListener(this);
ckbox3 = new JCheckBox(TkBar.getBt3Text());
bagcon.gridy = 4;
gb.setConstraints(ckbox3,bagcon);
dcon.add(ckbox3);
ckbox3.addItemListener(this);
ckbox4 = new JCheckBox(TkBar.getBt4Text());
bagcon.gridy = 5;
gb.setConstraints(ckbox4,bagcon);
dcon.add(ckbox4);
ckbox4.addItemListener(this);
ckbox5 = new JCheckBox(TkBar.getBt5Text());
bagcon.gridy = 6;
gb.setConstraints(ckbox5,bagcon);
dcon.add(ckbox5);
ckbox5.addItemListener(this);
JPanel Nopan2 = new JPanel();
bagcon.gridx = 1;
bagcon.gridy = 7;
gb.setConstraints(Nopan2,bagcon);
dcon.add(Nopan2);
OkBtn = new JButton("OK");
OkBtn.addActionListener(this);
bagcon.gridx = 1;
bagcon.gridy = 8;
gb.setConstraints(OkBtn,bagcon);
dcon.add(OkBtn);
OkBtn.addActionListener(this);
CnBtn = new JButton("Cancel");
CnBtn.addActionListener(this);
bagcon.gridx = 2;
bagcon.gridy = 8;
gb.setConstraints(CnBtn,bagcon);
dcon.add(CnBtn);
CnBtn.addActionListener(this);
JPanel Nopan3 = new JPanel();
bagcon.gridx = 3;
bagcon.gridy = 8;
gb.setConstraints(Nopan3,bagcon);
dcon.add(Nopan3);
JPanel Nopan4 = new JPanel();
bagcon.gridx = 0;
bagcon.gridy = 9;
gb.setConstraints(Nopan4,bagcon);
dcon.add(Nopan4);
setLocation(sSize.width*1/2,sSize.height*1/20);
setSize(sSize.width*1/2,sSize.height*4/5);
setTitle("Java QuickLaunch Toolbar");
setResizable(false);
setVisible(true);
public void actionPerformed(ActionEvent e)
{ /*--- Code of INTEREST begins here!!!!!! -------
if(e.getActionCommand().equals("OK"))
if(short1 || short2 || short3 || short4 || short5)
//confirm = new JOptionPane();
int n = confirm.showConfirmDialog(this,
"Do you really want to delete?","Delete Confirmation",
JOptionPane.YES_NO_OPTION);
if(n == confirm.YES_OPTION) //Works Fine!
while(short1 || short2 || short3 || short4 || short5)
if(short1)
TkBar.setBt1Action("Link1");
TkBar.setButton1("");
TkBar.setPath1("null");
Fops.setFDArray(0,"null");
Fops.setFDArray(1,"null");
short1 = false;
else
if(short2)
TkBar.setBt2Action("Link2");
TkBar.setButton2("");
TkBar.setPath2("null");
Fops.setFDArray(2,"null");
Fops.setFDArray(3,"null");
short2 = false;
else
if(short3)
TkBar.setBt3Action("Link3");
TkBar.setButton3("");
TkBar.setPath3("null");
Fops.setFDArray(4,"null");
Fops.setFDArray(5,"null");
short3 = false;
else
if(short4)
TkBar.setBt4Action("Link4");
TkBar.setButton4("");
TkBar.setPath4("null");
Fops.setFDArray(6,"null");
Fops.setFDArray(7,"null");
short4 = false;
else
if(short5)
TkBar.setBt5Action("Link5");
TkBar.setButton5("");
TkBar.setPath5("null");
Fops.setFDArray(8,"null");
Fops.setFDArray(9,"null");
short5 = false;
Fops.destroyFile(); //Destroy the old (outdated) file.
Fops.fileStatus(); //Create a new file.
Fops.writeFile(); //Write updated data to new file.
setVisible(false);
if(n == confirm.NO_OPTION) //** Does not work ***
System.out.println("No Option is being heard");
//Listeners are working.
//confirm.setVisible(false);
if(n == confirm.CLOSED_OPTION) //** Does not work ***
System.out.println("Closed Option is being heard");
//Listeners are working.
//confirm.setVisible(false);
--- Code of interest ENDS here --- */
else
if(e.getActionCommand().equals("Cancel"))
setVisible(false);
public void itemStateChanged(ItemEvent f)
int state = f.getStateChange();
if(state == ItemEvent.SELECTED) //If a checkbox has been selected.
if(f.getItem() == ckbox1)
short1 = true;
else
if(f.getItem() == ckbox2)
short2 = true;
else
if(f.getItem() == ckbox3)
short3 = true;
else
if(f.getItem() == ckbox4)
short4 = true;
else
if(f.getItem() == ckbox5)
short5 = true;
if(state == ItemEvent.DESELECTED) //If a checkbox has been deselected.
if(f.getItem() == ckbox1)
short1 = false;
else
if(f.getItem() == ckbox2)
short2 = false;
else
if(f.getItem() == ckbox3)
short3 = false;
else
if(f.getItem() == ckbox4)
short4 = false;
else
if(f.getItem() == ckbox5)
short5 = false;
}The code that is of interest to my current programming challenge is marked in the above code block like this:
//*** Code of INTEREST begins here!!!!!! ********** //
This is where my programming twilight behaviour begins to kick in. From the DelGUI object I now listen to a button event, this event when triggered causes a JOptionPane.showConfirmDialog(), as can be seen in the specified code block above. I make the JOptionPane centered over the DelGUI object ("JFrame No.: 2") which is also centered over the LauncherGUI object ("JFrame No.: 1").
The program begins to behave quite strangely after the creation of the JOptionPane object called confirm. The JOptionPane is presented on screen without any visiual difficulty but it behaves quite strangely when it's buttons are pressed. The JOptionPane contains three event sources, the YES, NO and Close buttons.
In my program the YES button causes a set of file operations to take place and then sets the "JFrame No.: 2"(DelGUI) invisible. It does this via the method setVisible(false). "JFrame No.: 2" is effectively the JOptionPane's parent component and as soon as it is setVisible(false) the JOptionPane is also cleared from the screen. I believe from my research that this is the JOptionPane's default behaviour, meaning that as soon as a button or event source is activated the JOptionPane will destroy itself.
The end of the trail is near, thankyou for reading this if you have got this far, and please carry on....
The Challenge:
The program does not behave as desired at the two points in the code commented as such: ** Does not work ***
if(n == confirm.NO_OPTION)
System.out.println("No Option is being heard");
//confirm.setVisible(false);
if(n == confirm.CLOSED_OPTION)
System.out.println("Closed Option is being heard");
//confirm.setVisible(false);
}If the NO_OPTION or the CLOSED_OPTION are pressed then the JOptionPane remains visible. After pressing the JoptionPane's button a second time it will disappear completely. I have tried a number of things in an attempt to work this out. Firstly I have inserted println messages to ensure that the events are being detected. These messages are always displayed whenever either the NO or Close buttons are pressed.
As these messages are being passed to the Standard Output, twice by the time the JOptionPane has disappeared, I can only assume that the events are being detected.
In addition to checking the event situation I have attempted to explicity set the JOptionPane invisible, in the form:
confirm.setVisible(false); The above line of code did not change the situation. Still I need two button clicks for the JOptionPane to display it's default behaviour which is to set itself invisible (or possibly the object is alloted to garbage collection), either way it is no longer on screen. I have also tried this code with no if statements related to NO_OPTION and CLOSE_OPTION. This was done in an attempt to allow the default behaviour to take place. Unfortunately two presses were still required in this situation.
A forum member mentioned the possibility that two JOptionPanes are being created. I have checked my code and am confident that I have not explicitly created the JOptionPane twice (the code throughout this question should support this).
Is it possible that two JOptionPanes are being created because of the nature of my code, the fact that there are two JFrames on the screen at once when the JOptionPane is instantiated? I am using the this keyword to specify the parent of the JOptionPanWell, I've checked your code and I've seen where is the error.
In Delface constructor (Delface.java, line 127), you've got this block of code :
1. OkBtn = new JButton("OK");
2. OkBtn.addActionListener(this);
3. bagcon.gridx = 1;
4. bagcon.gridy = 8;
5. gb.setConstraints(OkBtn,bagcon);
6. dcon.add(OkBtn);
7. OkBtn.addActionListener(this);
Have a deep look at lines 2 and 7 : you're registering twice an actionListener on this button. Then you're receiving twice the event and it shows two JOptionPanes. In fact, you've also the problem with the 'ok' option, but you don't see it, because the 'n' variable in your event handler is global to your class, then it's shared between the two calls to the event handlers. -
How do i update a JTextArea?
Hey
I have a main GUI class where i can add one number to an ArrayList in an ohter class (Basket). After i added the number to the ArrayList
i can click a button to open anohter window (which is created in BasketGUI class) where a JTextArea are showing the numbers i have
added in the ArrayList.
But notthing is showing, i know the addition to the ArrayList works because it works with a System.out.println.
I have to post alot of code, so you could just skip the code and eksplain to me in generel how to update a JTextArea.
BasketGUI:
* Basket.java
* Created on 5. februar 2008, 15:29
package userclasses;
import java.util.ArrayList;
* @author Lille mus
public class BasketGUI extends javax.swing.JFrame {
private Basket basket;
private Stock stock;
private String newline = "\n";
/** Creates new form Basket */
public BasketGUI() {
stock = new Stock();
basket = new Basket();
initComponents();
public String showBasket(){
ArrayList newBasket = basket.getArrayList();
String returnBasket = "";
for(Object item : newBasket){
returnBasket += item+newline;
return returnBasket;
/** 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.
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Indk?bskurv");
jLabel1.setText("Indk?bskurv");
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jTextArea1.setText(stock.printAllStockItems());
jTextArea1.setText(showBasket());
jScrollPane1.setViewportView(jTextArea1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jLabel1))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(224, Short.MAX_VALUE))
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(20, 20, 20)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(159, Short.MAX_VALUE))
pack();
}// </editor-fold>
* @param args the command line arguments
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BasketGUI().setVisible(true);
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}This code is what happends when i click the button which adds a number to the ArrayList:
private void putInBasket(java.awt.event.ActionEvent evt) {
//Integer itemId = Integer.parseInt(itemIdField.getText());
basket.addItemToBasket(3);
System.out.println(basket.showBasket());
}Basket class:
* To change this template, choose Tools | Templates
* and open the template in the editor.
package userclasses;
import java.util.ArrayList;
* @author Jesper
public class Basket {
private ArrayList<Integer> basket;
private String returnBasket;
private Stock stock;
private String newline = "\n";
public Basket(){
basket = new ArrayList<Integer>();
add4ItemsToBasket();
public void addItemToBasket(int itemId){
basket.add(itemId);
public void add4ItemsToBasket(){
addItemToBasket(1);
addItemToBasket(2);
public String showBasket(){
for(Integer item : basket){
returnBasket += item+newline;
return returnBasket;
public ArrayList getArrayList(){
return basket;
}Thank you!okay... i cant figure out the logic in this. i have put this code into the BasketGUI class:
public void setBasketList(){
basketListTextArea.append(basket.showBasket());
}this function i call in my MainGUI here:
private void putInBasket(java.awt.event.ActionEvent evt) {
//Integer itemId = Integer.parseInt(itemIdField.getText());
basket.addItemToBasket(3);
basketGUI.setBasketList();
System.out.println(basket.showBasket());
}What am i doing wrong? -
How do I convert my GUI java app to be an applet or display it on a webpage
I have created a loan calculator program in netbeans, I got the application to run fine but now I want to add it into a html page.
I'm just looking for a place to start, I just don't know where to go from here, I want to know if I can actually convert my app with a few changes to an applet or if any one can point me to a forum of similar interest or tutorials that explain what I'm looking for.
I don't even know what i'm looking for except i want this program to run on a webpage.
Or is there a way to run my .jar file on a webpage??
My teacher has not taught us anything on this matter except the below code suggestions on converting and my program is more extensive than her examples for converting. This is what she briefly described on this subject.
1.To convert an application to an applet the main differences are: import java.awt.Graphics; import javax.swing.JApplet; import javax.swing.JOptionPane;
Extend JApplet Replace main with public void init() method
Output with public void paint( Graphics g ) method
2. Remove calls to setSize, setTitle, pack, and any window listener calls, e.g., setDefaultCloseOperation. Compile the program---if something doesn't compile just comment it out for now.
3. Create a simple web page with the following body.
<applet CODE="__________.class" WIDTH="300" HEIGHT="300"
archive="http://www.cs.duke.edu/courses/fall01/cps108/resources/joggle.jar">
Your browser does not support applets </applet>
I understand those steps for a simple program like hello world but not my current app
Heres my code on the 2 extend off my first GUI of the Loan Application
public class AnalysisGUI extends GUI {
/** Creates new form AnalysisGUI */
public AnalysisGUI(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}//end constructor
private DecimalFormat currency = new DecimalFormat("0.00");
/** 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.
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
analysisjButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
writejTextArea = new javax.swing.JTextArea();
clearTextAreajButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
analysisjButton.setText("Analysis");
analysisjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
analysisjButtonActionPerformed(evt);
writejTextArea.setColumns(20);
writejTextArea.setRows(5);
jScrollPane1.setViewportView(writejTextArea);
clearTextAreajButton.setText("Clear Analysis Output");
clearTextAreajButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearTextAreajButtonActionPerformed(evt);
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(analysisjButton)
.addComponent(clearTextAreajButton))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 433, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(86, 86, 86))
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(306, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(analysisjButton)
.addGap(84, 84, 84)
.addComponent(clearTextAreajButton)
.addGap(113, 113, 113))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 263, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(22, 22, 22))))
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-700)/2, (screenSize.height-627)/2, 700, 627);
}// </editor-fold>
private void analysisjButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//importing values for FOR loop of 13 pyaments a years
ir13 = super.rate;
balance13 = super.balance;
time13 = super.time;
payment13 = MortgageCalculator.CalculatePayment(ir13, balance13, time13, PayperYear13);
interest13 = round((balance13 * (ir13/PayperYear13)));
principle13 = round(payment13 - interest13);
//set up for 12 pyaments a year
balance = super.balance;
ir = super.rate;
time = super.time;
payment = super.payment;
interest = round((balance * (ir/PayperYear12)));
principle = round(payment - interest);
//set up for 24 payments a year
balance24 = super.balance;
ir24 = super.rate;
time24 = super.time;
payment24 = super.payment/2;
interest24 = round((balance24 * (ir/PayperYear24)));
principle24 = round(payment24 - interest24);
//set up for 26 payemnts a years
ir26 = super.rate;
balance26 = super.balance;
time26 = super.time;
payment26 = MortgageCalculator.CalculatePayment(ir26, balance26, time26, PayperYear26);
interest26 = round((balance26 * (ir26/PayperYear26)));
principle26 = round(payment26 - interest26);
double totalPrinciple = 0; //set to zero
double totalInterest = 0; //set to zero
for( int n = 0; n < time; n++) //check Year of Loan
totalPrinciple = 0; //reset to zero for totaling Year n totals
totalInterest = 0; //reset to zero for totaling Year n totals
writejTextArea.append("-----Based on 12 Payments Per Year-----\n");
writejTextArea.append(" "+" "+"Principle" + " " +
"Interest"+ " "+
"Balance"+"\n");
//loops through the monthly payments
for(int i = 1; i <= PayperYear12; i++ )
//Calculate applied amounts for chart to be printed
interest = round((balance * ir)/PayperYear12);
principle = round(payment - interest);
balance = round(balance - principle);
//total year end amounts
totalPrinciple = totalPrinciple + principle;
totalInterest = totalInterest + interest;
writejTextArea.append("Payment " + i + " $" + currency.format(principle) + " " +
currency.format(interest) + " $" +
currency.format(balance)+"\n");
}//end for 12 payments per year
//print 12 payments Totals
int yr = n + 1;
writejTextArea.append("\n---Year " + yr + " Totals Based on 12 Payments Per Year---");
writejTextArea.append("\nYear Total Principle: $" + currency.format(totalPrinciple));
writejTextArea.append("\nYear Total Interest: $" + currency.format(totalInterest));
writejTextArea.append("\nRemaining Balance: $" + currency.format(balance)+"\n");
writejTextArea.append("\n-------------------------------------------------------\n");
//Start 13 PAYMENTS A YEAR TABLE
double totalPrinciple13 = 0; //reset to zero for totaling Year n totals
double totalInterest13 = 0; //reset to zero for totaling Year n totals
writejTextArea.append("-----Based on 13 Payments Per Year-----\n");
writejTextArea.append(" "+" "+"Principle" + " " +
"Interest"+ " "+
"Balance"+"\n");
//loops through the monthly 13 payments
for(int j = 1; j <= PayperYear13; j++ )
//Calculate applied amounts for chart to be printed
interest13 = round((balance13 * ir13)/PayperYear13);
principle13 = round(payment13 - interest13);
balance13 = round(balance13 - principle13);
//total year end amounts
totalPrinciple13 = totalPrinciple13 + principle13;
totalInterest13 = totalInterest13 + interest13;
//System.out.printf("\n%-10s %-10s %-10s %-10s %-10s", n + 1 , i + 1,Principle, Interest, Balance);
//System.out.printf("\n%-10s %-10s %-10.2f %-10.2f %-10.2f", n + 1 , i + 1,round(principle), round(interest), balance);
writejTextArea.append("Payment " + j + " $" + currency.format(principle13) + " " +
currency.format(interest13) + " $" +
currency.format(balance13)+"\n");
}//end for 13 payments per year
//Print totals for 13 payments a year
yr = n + 1;
writejTextArea.append("\n---Year " + yr + " Totals Based on 13 Payments Per Year---");
writejTextArea.append("\nYear Total Principle: $" + currency.format(totalPrinciple13));
writejTextArea.append("\nYear Total Interest: $" + currency.format(totalInterest13));
writejTextArea.append("\nRemaining Balance: $" + currency.format(balance13)+"\n");
writejTextArea.append("\n-------------------------------------------------------\n");
//Start 24 PAYMENTS A YEAR TABLE
double totalPrinciple24 = 0; //reset to zero for totaling Year n totals
double totalInterest24 = 0; //reset to zero for totaling Year n totals
writejTextArea.append("-----Based on 24 Payments Per Year-----\n");
writejTextArea.append(" "+" "+"Principle" + " " +
"Interest"+ " "+
"Balance"+"\n");
//loops through the monthly payments
for(int i = 1; i <= PayperYear24; i++ )
//Calculate applied amounts for chart to be printed
interest24 = round((balance24 * ir24)/PayperYear24);
principle24 = round(payment24 - interest24);
balance24 = round(balance24 - principle24);
//total year end amounts
totalPrinciple = totalPrinciple + principle24;
totalInterest = totalInterest + interest24;
writejTextArea.append("Payment " + i + " $" + currency.format(principle24) + " " +
currency.format(interest24) + " $" +
currency.format(balance24)+"\n");
}//end for 24 payments per year
//print 24 payments Totals
yr = n +1;
writejTextArea.append("\n---Year " + yr + " Totals Based on 24 Payments Per Year---");
writejTextArea.append("\nYear Total Principle: $" + currency.format(totalPrinciple24));
writejTextArea.append("\nYear Total Interest: $" + currency.format(totalInterest24));
writejTextArea.append("\nRemaining Balance: $" + currency.format(balance24)+"\n");
writejTextArea.append("\n-------------------------------------------------------\n");
//Start 26 PAYMENTS A YEAR TABLE
double totalPrinciple26 = 0;//reset to zero for totaling Year n totals
double totalInterest26 = 0; //reset to zero for totaling Year n totals
writejTextArea.append("------Based on 26 Payments Per Year-----\n");
writejTextArea.append(" "+" "+"Principle" + " " +
"Interest"+ " "+
"Balance"+"\n");
//loops through the monthly payments 26 times
for(int i = 1; i <= PayperYear26; i++ )
//Calculate applied amounts for chart to be printed
interest26 = round((balance26 * ir24)/PayperYear26);
principle26 = round(payment26 - interest26);
balance26 = round(balance26 - principle26);
totalPrinciple = totalPrinciple + principle26;
totalInterest = totalInterest + interest26;
writejTextArea.append("Payment " + i + " $" + currency.format(principle26) + " " +
currency.format(interest26) + " $" +
currency.format(balance26)+"\n");
}//end for 26 payments per year
yr = n + 1;
//prints 26 payments yearly totals
writejTextArea.append("\n---Year " + yr + " Totals Based on 26 Payments Per Year---");
writejTextArea.append("\nYear Total Principle: $" + currency.format(totalPrinciple26));
writejTextArea.append("\nYear Total Interest: $" + currency.format(totalInterest26));
writejTextArea.append("\nRemaining Balance: $" + currency.format(balance26)+"\n");
writejTextArea.append("\n-------------------------------------------------------\n");
}//end for years of the loan
private void clearTextAreajButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//clear analysis field
writejTextArea.setText("");
public static double round(double r)//round to cents method
return Math.ceil(r*100)/100;
}//end round
/**HI micha what a long progam
* @param args the command line arguments
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
AnalysisGUI dialog = new AnalysisGUI(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
dialog.setVisible(true);
});//end announymous
}//end main mehtod
//12 year declared varialbes
//private double balance;
private double principle;
private double ir;
private double interest;
private double PayperYear12 = 12;
//Variables for 13 payments a years
private int PayperYear13 = 13;
private double balance13;
private double principle13;
private double ir13;
private double interest13;
private double payment13;
private double time13;
//Varialbes for 24 payments a year
private int PayperYear24 = 24;
private double balance24;
private double principle24;
private double ir24;
private double interest24;
private double payment24;
private double time24;
//Varialbes for 24 payments a year
private int PayperYear26 = 26;
private double balance26;
private double principle26;
private double ir26;
private double interest26;
private double payment26;
private double time26;
// Variables declaration - do not modify
private javax.swing.JButton analysisjButton;
private javax.swing.JButton clearTextAreajButton;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea writejTextArea;Your original program extends "GUI" which appears to extend JFrame (correct me if I'm wrong). If so, the first thing you should do would be to re-write this so that it extends JPanel which shouldn't be that hard to do (at least it's not hard to do if you know a little Swing -- but I worry about someone coming into this from the netbeans-generated code world). Purists will tell you to not even extend this, to have your main GUI class hold an instance of JPanel instead, and this would work fine too, as long as one way or another, the main GUI program can produce your application displayed on a JPanel on demand.
If you've done this correctly, then using your JPanel in a JFrame is trivial: in a main method create a JFrame, and then simply add your JPanel to the JFrame's contentPane and display it. Likewise using your JPanel in a JApplet is just as trivial as you'd do essentially the same thing: add your JPanel to the JApplet's contentPane, but this time do it in the JApplet's init method. -
Saving parameters entered in a gui dialog to be used in the main panel
Hi,
I'm having a nightmare at the moment.
I've finished creating a program for my final year project, that is all comand line at the moment.
i'm required to design a GUI for this. i've started already and have a main panel that has a few buttons one of which is a setParameters button. which opens up a file dialog that allows the user to enter parameters that will be used by the main panel later on.
I'm having trouble imagining how these parameters will be accessed by the main Panel once they are saved.
At the moment, without the GUI i have get and set methods in my main program which works fine. Is this the kind of thing i'll be using for this?
my code for the parameters dialog
public class Parameters extends JDialog
private GridLayout grid1, grid2, grid3;
JButton ok, cancel;
public Parameters()
setTitle( "Parameters" );
setSize( 400,500 );
setDefaultCloseOperation( DISPOSE_ON_CLOSE );
grid1 = new GridLayout(7,2);
grid2 = new GridLayout(1,2);
JPanel topPanel = new JPanel();
topPanel.setLayout(grid1);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(grid2);
ok = new JButton("OK");
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//when pressed i want to save the parameters that the user has entered
//and be able to access these in the RunPanel class
cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//when pressed just want the Jdialog to close
buttonPanel.add(ok);
buttonPanel.add(cancel);
JTextArea affinityThresholdScalar = new JTextArea();
JTextArea clonalRate = new JTextArea();
JTextArea stimulationValue = new JTextArea();
JTextArea totalResources = new JTextArea();
JLabel aTSLabel = new JLabel("affinityThresholdScalar");
JLabel cRLabel = new JLabel("clonalRate");
topPanel.add(aTSLabel);
topPanel.add(affinityThresholdScalar);
topPanel.add(cRLabel);
topPanel.add(clonalRate);
Container container = getContentPane();//.add( topPanel );
container.add( topPanel, BorderLayout.CENTER );
container.add( buttonPanel, BorderLayout.SOUTH );
}the main panel class is:
public class RunPanel extends JPanel implements ActionListener
JButton openButton, setParametersButton, saveButton;
static private final String newline = "\n";
JTextArea log;
JFileChooser fc;
Data d = new Data();
Normalise rf = new Normalise();
Parameters param = new Parameters();
public RunPanel()
super(new BorderLayout());
log = new JTextArea(5,20);
log.setMargin(new Insets(5,5,5,5));
log.setEditable(false);
JScrollPane logScrollPane = new JScrollPane(log);
fc = new JFileChooser();
openButton = new JButton("Open a File...")
openButton.addActionListener(this);
setParametersButton = new JButton("Set User Parameters");
setParametersButton.addActionListener(this);
saveButton = new JButton("save");
saveButton.addActionListener(this);
JPanel buttonPanel = new JPanel(); //use FlowLayout
buttonPanel.add(openButton);
buttonPanel.add(setParametersButton);
JPanel savePanel = new JPanel();
savePanel.add(saveButton);
add(buttonPanel, BorderLayout.PAGE_START);
add(logScrollPane, BorderLayout.CENTER);
add(savePanel, BorderLayout.SOUTH);
public void actionPerformed(ActionEvent e) {
if (e.getSource() == openButton) {
int returnVal = fc.showOpenDialog(RunPanel.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
log.append("Opening: " + file.getName() + "." + newline);
Vector data = d.readFile(file);
log.append("Reading file into Vector " +data+ "." + newline);
Vector dataNormalised = rf.normalise(data);
else {
log.append("Open command cancelled by user." + newline);
log.setCaretPosition(log.getDocument().getLength());
else if (e.getSource() == saveButton) {
int returnVal = fc.showSaveDialog(RunPanel.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
log.append("Saving: " + file.getName() + "." + newline);
} else {
log.append("Save command cancelled by user." + newline);
log.setCaretPosition(log.getDocument().getLength());
else
if (e.getSource() == setParametersButton)
log.append("loser." + newline);
param.show();
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("AIRS");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new RunPanel();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}Can anybody offer any suggestions?
CheersWhat you need is my ParamDialog. I think it could be perfect for this sort of thing. There are a few references in it to some of my other classes namely
StandardDialog. Which you can find by searching for other posts on this forum. But if you'd rather not find that you could just use JDialog instead
WindowUtils.visualize() this is just a helper method for getting things visualized on the screen. You can just use setBounds and setVisible and you'll be fine.
You are welcome to use and modify this code but please don't change the package or take credit for it as your own work.
If you need to bring up a filedialog or a color chooser you will need to make some modifications. If you do this, would you mind posting that when you are done so that myself and others can use it? :)
StandardDialog.java
================
package tjacobs.ui;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import java.awt.*;
import java.util.HashMap;
import java.util.Properties;
/** Usage:
* * ParamDialog pd = new ParamDialog(new String[] {"A", "B", "C"});
* pd.pack();
* pd.setVisible(true);
* Properties p = pd.getProperties();
public class ParamDialog extends StandardDialog {
public static final String SECRET = "(SECRET)";
String[] fields;
HashMap<String, JTextField> mValues = new HashMap<String, JTextField>();
public ParamDialog(String[] fields) throws HeadlessException {
this(null, fields);
public ParamDialog(JFrame owner, String[] fields) {
super(owner);
setModal(true);
this.fields = fields;
JPanel main = new JPanel();
main.setLayout(new GridLayout(fields.length, 1));
for (int i = 0; i < fields.length; i++) {
JPanel con = new JPanel(new FlowLayout());
main.add(con);
JTextField tf;
if (fields.endsWith(SECRET)) {
con.add(new JLabel(fields[i].substring(0, fields[i].length() - SECRET.length())));
tf = new JPasswordField();
else {
con.add(new JLabel(fields[i]));
tf = new JTextField();
tf.setColumns(12);
con.add(tf);
mValues.put(fields[i], tf);
this.setMainContent(main);
public boolean showApplyButton() {
return false;
public void apply() {
private boolean mCancel = false;
public void cancel() {
mCancel = true;
super.cancel();
public Properties getProperties() {
if (mCancel) return null;
Properties p = new Properties();
for (int i = 0; i < fields.length; i++) {
p.put(fields[i], mValues.get(fields[i]).getText());
return p;
public static void main (String[] args) {
ParamDialog pd = new ParamDialog(new String[] {"A", "B", "C"});
WindowUtilities.visualize(pd);
public static Properties getProperties(String[] fields) {
ParamDialog pd = new ParamDialog(fields);
WindowUtilities.visualize(pd);
return pd.getProperties(); -
Challenge involving creating a file on GUI & seeing one record at a time...
Hi,
If anyone can help me with this project I'd be most appreciative. I'll try and explain the problem the best I can. I'm adding students to a database at a university they're either a Graduate or an Undergraduate. I'm taking in first, lastname's, ssn, & ACT/SAT/GMAT test results. I have a GUI called StudentRecord that has all the JTextFields, JButton's, etc. I'm also writing it to a .txt file called StudentDA. For this I used a BufferedFile reader.
What I really need is on my StudentRecord when I click the display button I want it to show one record at a time in another JFrame. This other JFrame I named it display. I'm trying to create an instance of JFrame inside of the actionPerformed for StudentRecord but when I click display nothing happens.
I adding the students with a vector that I'm calling v. I want the Display to read from the .txt file and display one at a time hence next, and previous. I'm going to post the tidbit of relevant code. If anyone can help me you'd be my hero for the day for all time I've tried to get this to work.
Here's the StudentRecord (GUI) display part:
public void actionPerformed( ActionEvent event )
try {
Display d = new Display(StudentDA.v);
}//end try
//catch right here no problems with this..Here's the DataAccess part:
public class StudentDA{
static Vector v = new Vector();;
static String pathName = "a:/Final Project/test1.txt";
static File studentFile = new File(pathName);
static String status;
public StudentDA() {}
public static void initialize() {
if (studentFile.exists() && studentFile.length() !=0) {
try{
BufferedReader in = new BufferedReader(new
FileReader(studentFile) );
do{
status = in.readLine();
if(status.equals ("uGrad")) {
uGrad u = new uGrad();
u.setFName(in.readLine() );
u.setLName(in.readLine() );
u.setssNum(Integer.parseInt(in.readLine()) );
u.setACT(Integer.parseInt(in.readLine() ));
v.add(u);
System.out.println(u + "inside ugrad");
}//end if uGrad
else{
if(status.equals("Grad")) {
//same process as uGrad
v.add(g);
}//end else Grad
}while (status != null);
}//end try statement
catch (Exception e) {
}//end catch
}//end if there's something there
}//end method initialize
//creating the terminate method
public static void terminate() {
try{
PrintStream out = new PrintStream ( new
FileOutputStream (studentFile) );
for (int i = 0; i < v.size(); i++) {
Student s = (Student) v.elementAt(i);
String p = s.printRecord();
StringTokenizer rt = new StringTokenizer(p, "\t");
while (rt.hasMoreTokens() ) {
out.println(rt.nextToken() );
}//end while
}//end for loop
}//end try loop
catch (Exception e){
}//end catch
}//end terminate
public static void add(Student s){// throws DuplicateException{
boolean duplicate = false;
for(int i = 0; i < v.size(); i++){
if(s.getssNum() == ((Student)(v.elementAt(i))).getssNum()){
duplicate = true;
break;
if(duplicate){
throw new DuplicateException("Student Already Exists");
else{
v.add(s);
}//end add method
}//end classHere's the display class:
public class Display extends JFrame {
private JButton Next, Previous;
private JTextField statusField, firstField, lastField, socialField, advPlacementField, actField;
private JLabel statusLabel, firstLabel, lastLabel, socialLabel, advPlacementLabel, actLabel;
private JPanel fieldPanel, buttonsPanel;
private JTextArea displayArea;
static int count = 0;
static String status;
public Display(){}
public Display(Vector v){
//setting up the GUI components for the display class here
//JTextAreas & JLabels
buttonsPanel = new JPanel();
buttonsPanel.setLayout(new GridLayout(1,2));
Next = new JButton("Next");
buttonsPanel.add(Next);
Next.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent event )
//try to catch display errors
try {
count++;
displayData(count);
//displayData();
}//end try
catch {
}//end catch
} // end actionPerformed
} // end anonymous inner class
); // end call to addActionListener
buttonsPanel.add(Next);
Previous = new JButton("Previous");
buttonsPanel.add(Previous);
Previous.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent event )
//try to catch display errors
try {
count--;
displayData(count);
//displayData();
}//end try
catch {
}//end catch
} // end actionPerformed
} // end anonymous inner class
); // end call to addActionListener
}//end display() constructor
public void displayData(int count) {
StudentDA.initialize();
if (status.equals ("uGrad")) {
//these are all part of the StudentRecord GUI not Display GUI
fieldPanel.setVisible(true);
buttonsPanel.setVisible(true);
actLabel.setVisible(true);
actField.setVisible(true);
advPlacementLabel.setVisible(false);
advPlacementLabel.setVisible(false);
}//end if
else {
if(status.equals ("Grad")) {
fieldPanel.setVisible(true);
buttonsPanel.setVisible(true);
actLabel.setVisible(false);
actField.setVisible(false);
advPlacementLabel.setVisible(true);
advPlacementLabel.setVisible(true);
}//end if
}//end else
}//end method displayData()
public static void main ( String args[] )
Display application = new Display();
application.addWindowListener(
new WindowAdapter(){
public void windowClosing( WindowEvent e)
System.exit(0);
application.setSize( 300, 200);
application.setVisible( true );
};//end main
}//end class Display{}I know this is long but if anyone can help I'd greatly appreciate it. Please ask me if you need me to clarify something, I tried to not make it way too long. --rockbottom01
I'm not really too sure what it is that you are after, but here is some code, that loads up an array with each line of a .txt file, then displays them. I hope you can make use of a least some of it.
just ask if you don't understand any of the code.
String array[];
int i;
public Test() {
readFile("file.txt");
i = 0;
nextEntry();
public void nextEntry() {
Display display = new Display();
display.show();
class Display extends JFrame implements ActionListener {
JLabel label1;
JButton button;
public Display() {
label1 = new JLabel(array);
button = new JButton("OK");
getContentPane().setLayout(new FlowLayout());
getContentPane().add(label1);
getContentPane().add(button);
button.addActionListener(this);
public void actionPerformed(ActionEvent e) {
setVisible(false);
i++;
if(i < array.length) {
nextEntry();
public void readFile(String fileName) {
String s, s2 = "";
int lineCount = 0;
BufferedReader in;
try {
in = new BufferedReader(new FileReader(fileName));
while((s = in.readLine()) != null) {
lineCount++;
array = new String[lineCount];
in.close();
in = new BufferedReader(new FileReader(fileName));
int j = 0;
while((s = in.readLine()) != null) {
array[j] = s;
j++;
catch(IOException e) {
System.out.println("Error"); -
Cant Get Text To Show In JTextArea
Hi guys,
I'm trying to create a very simplistic GUI where the output of an IRC server is shown in a JTextArea. However for the life of me I can not get any text at all to show in the text area. Here's the class that creates the user interface:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class SwingTest extends javax.swing.JFrame implements ActionListener {
JButton connect = new JButton("Connect");
JTextArea chat = new JTextArea();
public SwingTest() {
//set the title of the frame
super("Chat Window");
//set the size of the frame
setSize(800, 600);
//set what happens when the close button is clicked
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// create the scroll pane to add the text area to
chat.setLineWrap(true);
JScrollPane scroll = new JScrollPane(chat, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//create the container panel
JPanel jp = new JPanel();
//create the layout manager and assign it to the container panel
BoxLayout horizontal = new BoxLayout(jp, BoxLayout.Y_AXIS);
jp.setLayout(horizontal);
//add the text area and button to the container panel
jp.add(scroll);
jp.add(connect);
//add the container panel to the frame
add(jp);
//make the frame and its contents visible
setVisible(true);
//add an event listener to the connect button
connect.addActionListener(this);
public void actionPerformed(ActionEvent event) {
int temp = 1;
SockThread mySock = new SockThread();
try {
Thread.sleep(20000);
while(temp == 1) {
while(mySock.pinger != false) {
chat.append(mySock.getStatus()+ "\n");
mySock.pinger = false;
break;
} catch (InterruptedException ie) {
chat.setText("Error " + ie.getMessage());
public static void main(String[] arguments) {
//create an instance of the SwingTest class and let it do its thing
SwingTest st = new SwingTest();
}Thanks hiwa, i did what you suggested and created a worker thread, but still I'm getting nothing in that JTextArea. I'm new to working with worker threads though, so if anyone wouldn't taking a look at my code just to see if I'm doing something wrong i would greatly appreciate it.
Here is my worker class:
import javax.swing.*;
public class ChatWorker extends SwingWorker {
String messages;
String output;
JTextArea chat;
public ChatWorker() {
super();
protected String doInBackground() {
int temp = 1;
SockThread st = new SockThread();
try {
Thread.sleep(20000);
//Perpetual loop needed to keep checking for server messages
while(temp == 1) {
while(st.pinger != false) {
messages = st.getStatus();
st.pinger = false;
break;
} catch (InterruptedException ie) {
return messages;
}And here is the update gui class to make use of the worker thread:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.beans.*;
public class SwingTest extends javax.swing.JFrame implements ActionListener, PropertyChangeListener {
JButton connect = new JButton("Connect");
JTextArea chat = new JTextArea();
ChatWorker cw;
public SwingTest() {
//set the title of the frame
super("Chat Window");
//set the size of the frame
setSize(800, 600);
//set what happens when the close button is clicked
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// create the scroll pane to add the text area to
chat.setLineWrap(true);
JScrollPane scroll = new JScrollPane(chat, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//create the container panel
JPanel jp = new JPanel();
//create the layout manager and assign it to the container panel
BoxLayout horizontal = new BoxLayout(jp, BoxLayout.Y_AXIS);
jp.setLayout(horizontal);
//add the text area and button to the container panel
jp.add(scroll);
jp.add(connect);
//add the container panel to the frame
add(jp);
//make the frame and its contents visible
setVisible(true);
//add an event listener to the connect button
connect.addActionListener(this);
public void actionPerformed(ActionEvent event) {
try {
cw = new ChatWorker();
cw.addPropertyChangeListener(this);
cw.execute();
} catch (Exception exc) {
public void propertyChange(PropertyChangeEvent event) {
try {
String tempText = (String)cw.get();
chat.append(tempText + "\n");
}catch (Exception exc) {
public static void main(String[] arguments) {
//create an instance of the SwingTest class and let it do its thing
SwingTest st = new SwingTest();
}
Maybe you are looking for
-
Adobe Reader disables Save as PDF
I have been filling a few tax forms as I usually do every year. Once I was done I tried to save it as a pdf, as I have always done. But I find that Adobe Reader has disabled saving as pdf! Let me explain that when I say before I was able to do that,
-
How to make cube retrieval faster
Hello, I have an ASO cube with 12 dimensions. Only one of these dimensions is large (60K members) but there is a fair amount of data being loaded (5M). All of the dimensions are stored, with "scenario" being label-only. When using the Spreadsheet add
-
I have a video [actually it's a cable TV picture] running in an application window that I want to be able to 'sample' from time-to-time (to update a webpage with a snapshot image). I have looked at using screencapture via a shellscript, but this need
-
Reinstalling elements 6 & premiere 4
My computer crashed & now I am rebuilding my various software & trying to reinstall both the Photoshop elements 6 & premiere 4 from my original installation cd's. after a seeminly install I get an error message that the installation was interrupted
-
Having trouble accessing my Macbook's Shared folders on Windows 7
After updating my Macbook to 10.10.1, My Windows 7 machine can't log in to the shared folders. I keep getting an error: " Log in failure: unknowing username or bad password " No settings have been changed on my Windows Machine and everything was work