Go Back   CodingForums.com > :: Server side development > Java and JSP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 12-15-2011, 10:46 PM   PM User | #1
HapticThreek
New to the CF scene

 
Join Date: Dec 2011
Location: Cambridge, UK
Posts: 4
Thanks: 1
Thanked 0 Times in 0 Posts
HapticThreek is an unknown quantity at this point
5 JPanels in 1 JFrame, last frame hidden.

*NOW SOLVED* Hi people,
First post for me here but I think its a biggie!
I'm having this problem with a JFrame that I am adding 5 JPanels to. I have put borders on the JPanels, and set their size and location within the JFrame. The first 4 frames have gone in perfectly as I want them to, but the last (which is the only one that contains buttons - maybe a reason?) hasn't taken any of the things I have set to it. No border and not in the right location, it is hiding behind everything else. I have to maximize the JFrame window to see it at all. I have tried resizing the JFrame to (1000,1000) and the edge of the No button shows but that's all.
Here is my code:
Code:
import javax.swing.*; // Needed to build GUI.
import java.awt.*; // Needed for some parts of the GUI (frame colours).
import java.awt.event.*; // Needed to use event listeners.
import java.text.DecimalFormat; /* Needed to format the percentage of vowels 
											  to 2 decimal places. */


public class Statistics extends JFrame
{ // Start of Statistics class.

	public void StatsWindow(String text, String printable, String consonants, 
	String vowels, int nonPrintable, char[] vowelArray, int[] vowelFrequency)
	{ // Start of StatsWindow method.
		
		DecimalFormat df = new DecimalFormat("#.##"); // Sets decimal format to 2 places.
		
		// Declare and work out percentage for vowel frequency.
		double aPerc = ((double)vowelFrequency[0] / printable.length()) * 100;
		double ePerc = ((double)vowelFrequency[1] / printable.length()) * 100;
		double iPerc = ((double)vowelFrequency[2] / printable.length()) * 100;
		double oPerc = ((double)vowelFrequency[3] / printable.length()) * 100;
		double uPerc = ((double)vowelFrequency[4] / printable.length()) * 100;
		
		// Set the properties of the JFrame.
		setTitle("Results of Text Analysis");
		setSize(600, 425);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		
		// Declare the labels for the results window. Some labels use HTML, some do not.
		JLabel msg = new JLabel("The original text is:                ");
		JLabel origStringLength = new JLabel("<html>Original length of text was " 
		+ text.length() + 
		" characters. <P>This includes white-space and non-printing characters.");
		JLabel ratios = new JLabel(
		"<html>The ratio of printing to non-printing characters is " 
		+ printable.length() + ":" + nonPrintable 
		+ ". <P>The ratio of vowels to consonants is " 
		+ vowels.length() + ":" + consonants.length() + ".");
		JLabel aFreq = new JLabel("The vowel 'A' occured " + vowelFrequency[0] 
		+ " times. That is " + df.format(aPerc) + "% of the printable characters.");
		JLabel eFreq = new JLabel("The vowel 'E' occured " + vowelFrequency[1] 
		+ " times. That is " 	+ df.format(ePerc) + "% of the printable characters.");
		JLabel iFreq = new JLabel("The vowel 'I' occured " + vowelFrequency[2] 
		+ " times. That is " + df.format(iPerc) + "% of the printable characters.");
		JLabel oFreq = new JLabel("The vowel 'O' occured " + vowelFrequency[3] 
		+ " times. That is " + df.format(oPerc) + "% of the printable characters.");
		JLabel uFreq = new JLabel("The vowel 'U' occured " + vowelFrequency[4] 
		+ " times. That is " + df.format(uPerc) + "% of the printable characters.");
		JLabel again = new JLabel("Would you like to analyse again?");
		
		// Create new JTextArea with the original String in it and make it scrollable.
		JTextArea origString = new JTextArea(text, 4, 25);
		origString.setLineWrap(true);
		origString.setWrapStyleWord(true);
		JScrollPane scroll = new JScrollPane(origString, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
		JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		
		// Create a Yes & No button for if the user wants to analyse again or not.
		JButton yesButton = new JButton("Yes");
		JButton noButton = new JButton("No");
		
		// Create 5 new JPanels.
		JPanel p1 = new JPanel();
		JPanel p2 = new JPanel();
		JPanel p3 = new JPanel();
		JPanel p4 = new JPanel();
		JPanel p5 = new JPanel();
		
		// Set black borders around each panel.
		p1.setBorder(BorderFactory.createLineBorder(Color.black));
		p2.setBorder(BorderFactory.createLineBorder(Color.black));
		p3.setBorder(BorderFactory.createLineBorder(Color.black));
		p4.setBorder(BorderFactory.createLineBorder(Color.black));
		p5.setBorder(BorderFactory.createLineBorder(Color.black));
		
		// Set the size of each panel.
		p1.setSize(600,100);
		p2.setSize(600,50);
		p3.setSize(600,50);
		p4.setSize(600,110);
		p5.setSize(600,115);
		
		// Set the location in the JFrame of each panel.
		p1.setLocation(0,0);
		p2.setLocation(0,100);
		p3.setLocation(0,150);
		p4.setLocation(0,200);
		p5.setLocation(0,310);
			
		// Add two button listeners.
		yesButton.addActionListener(new yesButtonListener());
		noButton.addActionListener(new noButtonListener());
		
		// Add elements to each panel.
		p1.add(msg);
		p1.add(scroll);
		p2.add(origStringLength);
		p3.add(ratios); 
		p4.add(aFreq);
		p4.add(eFreq);
		p4.add(iFreq);
		p4.add(oFreq);
		p4.add(uFreq);
		p5.add(again);
		p5.add(yesButton);
		p5.add(noButton);
		
		// Add each panel to the JFrame.
		add(p1);
		add(p2);
		add(p3);
		add(p4);
		add(p5);
	
		// Set the window to visible.
		setVisible(true);
	} // End of StatsWindow method.
	
	public class yesButtonListener implements ActionListener
	{ // Start of yesButtonListener class.
		public void actionPerformed(ActionEvent e)
		{ // Start of actionPerformed method.
			
			// Opens new instance of the ReadFromKeyboard class (opens new window).
			new InputOrFile();
			
			// Sets the old window to not be visible.
			setVisible(false);
			
			// Disposes of the old window once invisible.
			dispose();
		} // End of actionPerformed method.
	} // End of yesButtonListener class.
	
	public class noButtonListener implements ActionListener
	{ // Start of noButtonListener class.
		public void actionPerformed(ActionEvent e)
		{ // Start of actionPerformed method.
			
			// Create new JFrame for pop-up message.
			JFrame frame = new JFrame();
			
			// Open pop-up message.			
			JOptionPane.showMessageDialog(frame, "Thank you, program will now exit.");
			setVisible(false);
			dispose();
			
			// Stop the program.
			System.exit(0);
		} // End of actionPerformed method.
	} // End of noButtonListener class.
} // End of Statistics class.
This is a screenshot of the window as it's opening now:

This is a screenshot of when the window is maximized:


I hope someone can see where I've gone wrong because I'm stuck fast!

Thanks a lot.

Last edited by HapticThreek; 12-16-2011 at 12:29 AM.. Reason: solved
HapticThreek is offline   Reply With Quote
Old 12-16-2011, 12:29 AM   PM User | #2
HapticThreek
New to the CF scene

 
Join Date: Dec 2011
Location: Cambridge, UK
Posts: 4
Thanks: 1
Thanked 0 Times in 0 Posts
HapticThreek is an unknown quantity at this point
managed to solve this after hours of staring at it. sorry to bother
HapticThreek is offline   Reply With Quote
Reply

Bookmarks

Tags
frame, hidden, panel, swing

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:32 AM.


Advertisement
Log in to turn off these ads.