Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   Java (http://www.programmingforums.org/forum17.html)
-   -   JLabel question (http://www.programmingforums.org/showthread.php?t=15526)

clook Apr 1st, 2008 12:38 AM

JLabel question
 
i am trying to display the output in jlabels for this shipping cost program i have coded. I have created individual jlabels for the package ID, weight, and shipping cost and tried to display them with the mainPanel. I had no problems making labels for the input in my designFrame method, but when I try to make new labels for the mainPanel in displayoutput they simply do not display. here is the code:
:

import javax.swing.*;
import java.awt.event.*;



public class shippingCharge extends JFrame implements ActionListener
{

        //objects and data types created here
        JPanel mainPanel = new JPanel();
        JTextField packageIdentificationTextField = new JTextField(6);
        JTextField poundsTextField = new JTextField(10);
        JTextField ouncesTextField = new JTextField(10);
        JButton displayButton = new JButton("Calculate  ");
       
       
        //Variables
        String packageIdentificationString;
        double poundDouble, ouncesDouble, poundToOunceOuncesDouble, shippingCostDouble;


        public static void main(String[] args)
        {
                shippingCharge shippingTotal = new shippingCharge();
        }
               
        public shippingCharge()
        {
                designFrame();
                setSize(500,500);
                setVisible(true);
               
        }
       
        public void designFrame()
        {
                mainPanel.add(new JLabel("Package ID"));
                mainPanel.add(packageIdentificationTextField);
                mainPanel.add(new JLabel("Pounds"));
                mainPanel.add(poundsTextField);
                mainPanel.add(new JLabel("Ounces"));
                mainPanel.add(ouncesTextField);
                mainPanel.add(displayButton);
               
               
        add(mainPanel);
                //add listener to the  object
        packageIdentificationTextField.addActionListener(this);
                displayButton.addActionListener(this);
               
        }
       
        public void getInput()
        {
                packageIdentificationString = packageIdentificationTextField.getText();
                poundDouble = Double.parseDouble(poundsTextField.getText());
                ouncesDouble = Double.parseDouble(ouncesTextField.getText());
               
        }
       
        public void calculateShipping()
        {
                final double SHIPPING_RATE = .12;
                final double OUNCES_PER_POUND = 16;
                poundToOunceOuncesDouble = poundDouble * OUNCES_PER_POUND;
                shippingCostDouble = (poundToOunceOuncesDouble + ouncesDouble) * SHIPPING_RATE;
               
        }

        public void actionPerformed(ActionEvent evt)
        {
                getInput();
                calculateShipping();
                displayOutput();
               
               
        }
       
        public void displayOutput()
        {
               
        mainPanel.add(new JLabel("Package ID:" + packageIdentificationString));
        mainPanel.add(new JLabel("Weight:" + poundDouble + "lbs" + ouncesDouble + "oz."));
        mainPanel.add(new JLabel("Shipping Cost:" + shippingCostDouble));
       
                       
        }
}


Fall Back Son Apr 2nd, 2008 8:13 PM

Re: JLabel question
 
Haha. Now you have me invested in your problem. I've worked on more complicated GUIs but none that involved adding components to a window that was already open. There's probably an easy solution. If you were using a better Layout, rather than the default, that would be good too.

titaniumdecoy Apr 2nd, 2008 11:13 PM

Re: JLabel question
 
Call validate() after adding the components to the panel.

The sizes of components on different systems will mess up your layout, as will resizing the window. Look into other layout managers and/or consider grouping elements in multiple panels.

You should also think about altering the visibility components in question (via setVisible()) rather than adding/removing them from the panel.

Fall Back Son Apr 3rd, 2008 1:53 PM

Re: JLabel question
 
I suggest, in your case, using BorderLayout, and making two panels. Then add your components to whatever sector you want.

H/o


All times are GMT -5. The time now is 4:16 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC