Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing the JFrame title

This code compiles, I just can't get the name to change on the title bar.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
import javax.swing.JPanel;  
import javax.swing.JTabbedPane;  
import javax.swing.JTextArea;  
import javax.swing.JTextField;  
public class VolumeCalculator extends JFrame implements ActionListener  
{  
    private JTabbedPane jtabbedPane;  
    private JPanel options;  
    JTextField poolLengthText, poolWidthText, poolDepthText, poolVolumeText, hotTub,  
            hotTubLengthText, hotTubWidthText, hotTubDepthText, hotTubVolumeText, temp, results,
            myTitle;  
    JTextArea labelTubStatus;  
    public VolumeCalculator()  
    {  
        setSize(400, 250);  
        setVisible(true);  
        setSize(400, 250);  
        setVisible(true);  
        setTitle("Volume Calculator");  
        setSize(300, 200);  
        JPanel topPanel = new JPanel();  
        topPanel.setLayout(new BorderLayout());  
        getContentPane().add(topPanel);  

        createOptions();  

        jtabbedPane = new JTabbedPane();  

        jtabbedPane.addTab("Options", options);  

        topPanel.add(jtabbedPane, BorderLayout.CENTER);  
    } 
    /* CREATE OPTIONS */ 

    public void createOptions()  
    {  
        options = new JPanel();  
        options.setLayout(null);  
        JLabel labelOptions = new JLabel("Change Company Name:");  
        labelOptions.setBounds(120, 10, 150, 20);  
        options.add(labelOptions);  
        JTextField newTitle = new JTextField("Some Title"); 
        newTitle.setBounds(80, 40, 225, 20);  
        options.add(newTitle);
        myTitle = new JTextField();   
        myTitle.setBounds(80, 40, 225, 20); 
        myTitle.add(labelOptions); 
        JButton newName = new JButton("Set New Name");  
        newName.setBounds(60, 80, 150, 20);  
        newName.addActionListener(this);  
        options.add(newName);  
        JButton Exit = new JButton("Exit");  
        Exit.setBounds(250, 80, 80, 20);  
        Exit.addActionListener(this);  
        options.add(Exit);  
    }  
    public void actionPerformed(ActionEvent event)  
    {  
        JButton button = (JButton) event.getSource();  
        String buttonLabel = button.getText();  
        if ("Exit".equalsIgnoreCase(buttonLabel))  
        {  
            Exit_pressed();  
            return;  
        }  
        if ("Set New Name".equalsIgnoreCase(buttonLabel))  
        {  
            New_Name();  
            return;  
        }  
    }  
    private void Exit_pressed()  
    {  
        System.exit(0);  
    }  
    private void New_Name()  
    {  
        this.setTitle(myTitle.getText());  
    }  
    private void Options()  
    {  
    }  
    public static void main(String[] args)  
    {  
        JFrame frame = new VolumeCalculator();  
        frame.setSize(380, 350);  
        frame.setVisible(true);  
    }  
}
like image 578
Mike Avatar asked Mar 30 '11 14:03

Mike


People also ask

How do you give a JFrame a title?

First, you can set the JFrame title when you construct your JFrame, like this: JFrame jframe = new JFrame("My JFrame Title"); Second, once you have a valid JFrame object, you can call the setTitle method of the JFrame class, like this: jframe.

How do I add a header to a JFrame?

add(version); titleText. add(title); titleText. add(slogan); titleText. setAlignmentX(frame.

Which method is used to set the title of frame window?

The setTitle() method changes the Frame's title to title.


1 Answers

If your class extends JFrame then use this.setTitle(newTitle.getText());

If not and it contains a JFrame let's say named myFrame, then use myFrame.setTitle(newTitle.getText());

Now that you have posted your program, it is obvious that you need only one JTextField to get the new title. These changes will do the trick:

JTextField poolLengthText, poolWidthText, poolDepthText, poolVolumeText, hotTub,
        hotTubLengthText, hotTubWidthText, hotTubDepthText, hotTubVolumeText, temp, results,
        newTitle;

and:

    public void createOptions()
    {
        options = new JPanel();
        options.setLayout(null);
        JLabel labelOptions = new JLabel("Change Company Name:");
        labelOptions.setBounds(120, 10, 150, 20);
        options.add(labelOptions);
        newTitle = new JTextField("Some Title");
        newTitle.setBounds(80, 40, 225, 20);
        options.add(newTitle);
//        myTitle = new JTextField("My Title...");
//        myTitle.setBounds(80, 40, 225, 20);
//        myTitle.add(labelOptions);
        JButton newName = new JButton("Set New Name");
        newName.setBounds(60, 80, 150, 20);
        newName.addActionListener(this);
        options.add(newName);
        JButton Exit = new JButton("Exit");
        Exit.setBounds(250, 80, 80, 20);
        Exit.addActionListener(this);
        options.add(Exit);
    }

and:

private void New_Name()
{
    this.setTitle(newTitle.getText());
}
like image 183
Costis Aivalis Avatar answered Sep 22 '22 22:09

Costis Aivalis