Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1343
  • Last Modified:

Setting a title for JOptionPane.showInputDialog

I Want to know if there is a way to set the title of the JOptionPane.showInputDialog box, not the text that is inside it :)

This will be very useful to meif its possible, anyone know how.
0
pjcrooks2000
Asked:
pjcrooks2000
  • 5
  • 4
  • 3
1 Solution
 
zzynxSoftware engineerCommented:
This is a possibility:

/*
 * JOptionPaneDemo.java
 *
 */

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

public class JOptionPaneDemo extends JFrame {
   
    /** Creates a new instance of JOptionPaneDemo */
    public JOptionPaneDemo() {
        init();
        setSize(500, 400);
        setLocationRelativeTo(null);
    }

    private void init() {
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                System.exit(0);
            }
        });
       
        JButton button = new JButton("Go");
        button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonActionPerformed(evt);
            }
        });
       
        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(button);
       
        pack();
    }
   
    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
        JOptionPane p = new JOptionPane("Are you sure you want to log out?",
            JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
        final JDialog d = p.createDialog(this, "Report");
        FocusListener fl= new FocusAdapter() {
            public void focusGained(FocusEvent e) {
                JButton focusButton= (JButton)(e.getSource());
                d.getRootPane().setDefaultButton(focusButton);      
            }    
        };
        JButton bYes = (JButton)((JPanel)p.getComponent(1)).getComponent(0);
        bYes.addFocusListener(fl);
        JButton bNo = (JButton)((JPanel)p.getComponent(1)).getComponent(1);
        bNo.addFocusListener(fl);
        d.setLocationRelativeTo(this);
       
        bNo.requestFocus(); // <<< Set the default button here
        d.setVisible(true);
        Object value = p.getValue();
        if (value == null || !(value instanceof Integer)) {
            JOptionPane.showMessageDialog(null, "You closed without answering");
        }
        else    {
            int i = ((Integer)value).intValue();
            if (i == JOptionPane.DEFAULT_OPTION) {
                JOptionPane.showMessageDialog(null, "You pressed ESC");
            }
            else if (i == JOptionPane.NO_OPTION) {
                JOptionPane.showMessageDialog(null, "You choose \"No\"");
            } else if (i == JOptionPane.YES_OPTION) {
                JOptionPane.showMessageDialog(null, "You choose \"Yes\"");
            }
        }
    }

    public static void main(String args[]) {
        JOptionPaneDemo f = new JOptionPaneDemo();
        f.show();
    }
   
}
0
 
pjcrooks2000Author Commented:
Ooooh that may well over complicate things for me, Here is my code perhaps I should have posted it

You can see that the input box is used to get the players name and needs to be lused for the scoreboard :) import java.awt.* ;
import java.awt.event.* ;
import java.awt.image.* ;
import javax.imageio.* ;
import java.io.* ;
import javax.swing.* ;
import java.util.*;
import java.applet.AudioClip;
import java.applet.Applet;
import java.net.URL;

/**
 *   Main Game Frame window called JaySnake
 */

public class JaySnake extends JFrame implements ActionListener
{
  class Game extends JPanel implements Runnable
  {
          private BufferedImage backBuffer ;
    private Graphics myBackBuffer ;

/*The HashMap  class is roughly equivalent to Hashtable,
 *except that it is unsynchronized and permits nulls*/
    HashMap imageMap = new HashMap(4);
     public int waitTime = 75;

/*Method used to get text from background menu items and set background image from that*/
     public void setImage(String fileName) throws Exception
     {
          if (fileName.equals("backgrounds/default")) //Sets background to default image
          {
                    backgroundImage = ImageIO.read( new File( "backgrounds/default.jpg" ) );
         }
         else if (fileName.equals("Long grass")) //Sets background to longGrass image
         {
                   backgroundImage = ImageIO.read( new File( "backgrounds/longGrass.jpg" ) );
         }
         else if (fileName.equals("Yellow Sand"))//Sets background to sand image
         {
                  backgroundImage = ImageIO.read( new File( "backgrounds/sand.jpg" ) );
         }

         else if (fileName.equals("Blue Glass")) //Sets background to blueGrass image
         {
                  backgroundImage = ImageIO.read( new File( "backgrounds/blueGlass.jpg" ) );
         }
         else //Sets to default if none mathced
         {
                   backgroundImage = ImageIO.read( new File( "backgrounds/default.jpg" ) );
         }
     }

    public Game()
    {

  /******Try read in default backgroundImage file and catch any exception*/
      try //first read in default image
      {
            backgroundImage = ImageIO.read( new File( "backgrounds/default.jpg" ) );
            clip = Applet.newAudioClip(new URL("file:" + System.getProperty("user.dir") + "/sounds/music.au"));
            appleEaten = Applet.newAudioClip(new URL("file:" + System.getProperty("user.dir") + "/sounds/apple.au"));
      }
      catch( IOException e )
      {
        System.out.println(e) ;
      }

      backBuffer = new BufferedImage( DISPLAY_W, DISPLAY_H, BufferedImage.TYPE_INT_RGB ) ;
      myBackBuffer = backBuffer.getGraphics() ;

//set up the menubar
      menubar = new JMenuBar();
      setJMenuBar(menubar);

    }

    public void paintComponent( Graphics g )
    {
      g.drawImage( backBuffer, DISPLAY_X, DISPLAY_Y, null ) ;
    }

     public void paint( Graphics g )
    {
            super.paint(g);
        g.drawImage(backgroundImage,0,0,null);

          //Draw green scoreboard and black rects
        g.setColor(Color.black);
        g.fillRect(1,540,598,20);
        g.fillRect(1,34,598,6);
        g.setColor(Color.white);
        g.drawRoundRect(1,0,598,32,10,10);

          //Calls Snake paint method
          if (snake != null)
             snake.draw(g);

    }

    public void run()
    {
      //     1000/25 Frames Per Second = 40millisecond delay
      int delayTime = 1000 / 25 ;

      Thread thisThread = Thread.currentThread() ;
      while( running )
      {
        //startTime = System.currentTimeMillis() ;
        // render to back buffer now
        render( myBackBuffer ) ;

        repaint() ;
        //  handle frame rate
        //elapsedTime = System.currentTimeMillis() - startTime ;
        //waitTime = Math.max( delayTime - elapsedTime, 5 ) ;

        try
        {
               Thread.sleep( waitTime ) ;
        }
        catch( InterruptedException e )
        {}
      }
      System.out.println( "Program Exited" ) ;
    }


  }

  private Thread gamePlay ;
  private boolean running = true ;
  private Game game ;

  private final int DISPLAY_X ; // value assigned in constructor
  private final int DISPLAY_Y ; // value assigned in constructor

  private static final int DISPLAY_W = 610 ;
  private static final int DISPLAY_H = 610 ;

  int size, hsize = 0, score1 = 0, score2 = 0, highscore = 0 ;

  /****Creates JMenuBar */
  private JMenuBar menubar ;
 
  /****Creates JMenu to house items */
  private JMenu gameMenu = new JMenu( "Game" ) ;
  private JMenuItem gameStart = new JMenuItem( "Start" ) ;
  private JMenuItem gameQuit = new JMenuItem( "Quit" ) ;
 
  private JMenu bgMenu = new JMenu( "Backgrounds" ) ;
  private ButtonGroup bgGroup = new ButtonGroup() ;
  private JRadioButtonMenuItem bg1 = new JRadioButtonMenuItem( "Default" ) ;
  private JRadioButtonMenuItem bg2 = new JRadioButtonMenuItem( "Long grass" ) ;
  private JRadioButtonMenuItem bg3 = new JRadioButtonMenuItem( "Yellow Sand" ) ;
  private JRadioButtonMenuItem bg4 = new JRadioButtonMenuItem( "Blue Glass" ) ;

  private JMenu soundMenu = new JMenu( "Enable sounds" ) ;
  private JCheckBoxMenuItem soundMusic = new JCheckBoxMenuItem( "Music" ) ;
  private JCheckBoxMenuItem soundSound = new JCheckBoxMenuItem( "Sounds" ) ;

  private JMenu helpMenu = new JMenu( "Help" ) ;
  private JMenuItem userInstruct = new JMenuItem( "User Instructions" ) ;
  private JMenuItem helpAbout = new JMenuItem( "About" ) ;

  /******JaySnake constructor*/
  public JaySnake()
  {
    setResizable( false ) ;
    game = new Game();
    getContentPane().add( game, BorderLayout.CENTER ) ;
    this.setJMenuBar( menubar );
                  menubar.add( gameMenu ) ;
                  gameMenu.setIcon(new ImageIcon("menuicons/start.gif"));
    gameMenu.add( gameStart ) ;
    gameStart.setIcon(new ImageIcon("menuicons/play.gif"));
     // ActionListener to quit the game when quit is clicked
    gameStart.addActionListener( new ActionListener(){

          public void actionPerformed( ActionEvent e )
          {
             String name = new String();
             name = JOptionPane.showInputDialog( "Please enter your name" );
             snake = new Snake(JaySnake.this, name, (soundForApple ? appleEaten : null));
          }
     });

    gameMenu.add( gameQuit ) ;
    gameQuit.setIcon(new ImageIcon("menuicons/quit.gif"));
   
    // ActionListener to quit the game when quit is clicked
    gameQuit.addActionListener( new ActionListener(){
          public void actionPerformed( ActionEvent e )
         {
             System.exit( 0 );
          }
     });
      
/*Background selection menubar setup adding actionlisteners*/
    menubar.add( bgMenu ) ;
    bgMenu.setIcon(new ImageIcon("menuicons/backgrounds.gif"));
    bgMenu.add( bg1 ); bg1.addActionListener(this);
    bgMenu.add( bg2 ); bg2.addActionListener(this);
    bgMenu.add( bg3 ); bg3.addActionListener(this);
    bgMenu.add( bg4 ); bg4.addActionListener(this);
/* "bgGroup"  groups menu items for background together*/
         bgGroup.add( bg1 );      bgGroup.add( bg2 );
         bgGroup.add( bg3 );        bgGroup.add( bg4 );

     /*Sounds menubar selection with actionListeners*/
    menubar.add( soundMenu );
    soundMenu.setIcon(new ImageIcon("menuicons/speaker.gif"));
    soundMusic.setState(true);
    soundMenu.add( soundMusic );
    soundMenu.add( soundSound ) ;

    soundSound.setState(true);

     /* Listeners */
     soundMusic.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e)
                 {
                    try
                    {
                         JCheckBoxMenuItem source = (JCheckBoxMenuItem)(e.getSource());
                         System.out.println(source.getText());
                         if (source.getState())
                         {
                              clip.loop();
                         }
                         else
                         {
                              clip.stop();
                         }

                    }
                    catch (Exception ex)
                    {
                         System.out.println(ex);
                    }
                 }
          });

     soundSound.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e)
                 {
                    try
                    {
                         JCheckBoxMenuItem source = (JCheckBoxMenuItem)(e.getSource());
                         if (source.getState())
                         {
                                   soundForApple = true;
                                   snake.setAppleSound(appleEaten);
                         }
                         else
                         {
                                   soundForApple = false;
                                   snake.setAppleSound(null);
                         }
                    }
                    catch (Exception ex)
                    {
                         System.out.println(ex);
                    }
                 }
          });
     /* /Listeners */

    menubar.add( helpMenu ) ;
    helpMenu.setIcon(new ImageIcon("menuicons/helpmenu.gif"));
    helpMenu.add( userInstruct );
    userInstruct.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                System.out.println("Instructions button pressed");
                //Create new Jframe to view User instructions
                JFrame f = new JFrame();
                JEditorPane p = new JEditorPane("text/html", "");
                f.getContentPane().add(p); // was missing in the previous code snippet
                p.setEditable(false);
                URL instructions = getClass().getResource("instructions/index.html");
                try {
                    p.setPage(instructions);
                }
               
                catch (Exception ep) {
                      
                    System.out.println("Not Got index.html");
                }

                f.setSize(265, 540);
                f.setVisible(true);
               
               
            }                        
        });
       
       
    helpMenu.add( helpAbout );
    helpAbout.addActionListener( new ActionListener(){
             public void actionPerformed( ActionEvent e )
     {
//Create an instance of About class window
                   About dlg = new About( JaySnake.this );
                   Dimension dlgSize = dlg.getPreferredSize();
                   Dimension frmSize = getSize();
                   Point loc = getLocation();
                   dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
                   dlg.setModal(true);
                   dlg.pack();
                   dlg.show();
    }
     } ) ;

    addWindowListener( new WindowAdapter()
    {
      public void windowClosing( WindowEvent e )
      {
        dispose();
        System.exit( 0 ) ;
      }
    } ) ;

    Insets insets = getInsets() ;
    DISPLAY_X = insets.left ;
    DISPLAY_Y = insets.top ;
    resizeToInternalSize( DISPLAY_W, DISPLAY_H ) ;
  }

  public void actionPerformed(ActionEvent e)
  {
     try
     {
          JMenuItem source = (JMenuItem)(e.getSource());
          System.out.println(source.getText());
          game.setImage(source.getText());
     }
     catch (Exception ex)
     {
          System.out.println(ex);
     }
  }

  public void resizeToInternalSize( int internalWidth, int internalHeight )
  {
    Insets insets = getInsets() ;
    final int newWidth = internalWidth + insets.left + insets.right ;
    final int newHeight = internalHeight + insets.top + insets.bottom ;

    Runnable resize = new Runnable()
    {
      public void run()
      {
        setSize( newWidth, newHeight ) ;
      }
    } ;

    if( !SwingUtilities.isEventDispatchThread() )
    {
      try
      {
        SwingUtilities.invokeAndWait( resize ) ;
      }
      catch( Exception e )
      {}
    }
    else
      resize.run() ;

    validate() ;
  }

     public void playMusic()
     {
          clip.loop();

     }

  public void start()
  {
    Thread gamePlay = new Thread( game ) ;
    gamePlay.start() ;
  }

//**************************Main method *************************************
       public static void main(String [] arguments)
     {
         System.out.println( "Starting JaySnake........" ) ;
         final JaySnake app = new JaySnake() ;

//Sets the location on screenof the JFrame behind the splash screen
         app.setLocation(210, 80);

         app.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent keyevent) {
                //System.out.println("Test key press >>>>>>>>>>>>>>>>>>>>>>>>>>");
                app.snake.keyPressed(keyevent);
            }
        });
         app.setSize( DISPLAY_W, DISPLAY_H ) ;
         app.setTitle( "JaySnake Game" ) ;
         app.setVisible( true ) ;
         Splash splash = new Splash(app);

         new Thread(new Runnable()
              {
                   public void run()
                   {
                           try
                           {
                             app.playMusic();
                             Thread.sleep(200);
                        }
                        catch (InterruptedException e)
                        {
                             System.out.println(e);
                        }
                   }
              }).start();
    }

/*Render method for graphics content*/
    public void render( Graphics g )
    {
     if( backgroundImage != null )
        g.drawImage( backgroundImage, 0, 0, this ) ;

/*Draw scoreboard and player details, sets color for score and player
 *fills rectangle and text white and draws another rectangle that is used
 *to highlight the playing area*/
      g.setColor( Color.black ) ;      /*sets color to black*/
      g.fillRect( 0, 0, 598, 32 ) ; /*fillsRectangle for scoreboard*/
      g.setColor( Color.white ) ;   /*sets color to white for text*/
/*Draws text and uses score variables*/
      g.drawString( "Player 1 score: " + score1, 10, 13 ) ;
      //g.drawString( "Player 2 score: " + score2, 10, 27 ) ;
      g.drawString( "High score: " + highscore, 510, 15 ) ;


    }

  /******declared class variables/containers*/
  private Image backgroundImage ;
  private Snake snake = null;
/* The musicclip to be played.*/
  private AudioClip clip = null;
/* The sound of the applet when eaten.*/
  private AudioClip appleEaten = null;
// Indicate if we want sound for eating the apple (options = true/false)
  private boolean soundForApple = true;
}


0
 
zzynxSoftware engineerCommented:
>> Ooooh that may well over complicate things for me
I'm sorry for that.
I just answered:
>>This will be very useful to meif its possible, anyone know how.
;°)
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
girionisCommented:
I think you can give it a title by default: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JOptionPane.html#showInputDialog(java.awt.Component, java.lang.Object, java.lang.String, int)
0
 
girionisCommented:
Here is the constructor:

public static String showInputDialog(Component parentComponent,
                                     Object message,
                                     String title,
                                     int messageType)
                              throws HeadlessException
0
 
girionisCommented:
Try this:

 // ActionListener to quit the game when quit is clicked
    gameStart.addActionListener( new ActionListener(){

          public void actionPerformed( ActionEvent e )
          {
             String name = new String();
             name = JOptionPane.showInputDialog(JaySnake.this,  "Please enter your name", "Title by Girionis", 1 );
             snake = new Snake(JaySnake.this, name, (soundForApple ? appleEaten : null));
          }
     });
0
 
girionisCommented:
Or even better:

 // ActionListener to quit the game when quit is clicked
    gameStart.addActionListener( new ActionListener(){

          public void actionPerformed( ActionEvent e )
          {
             String name = new String();
             name = JOptionPane.showInputDialog(JaySnake.this,  "Please enter your name", "Title by Girionis", JOptionPane.QUESTION_MESSAGE );
             snake = new Snake(JaySnake.this, name, (soundForApple ? appleEaten : null));
          }
     });
0
 
pjcrooks2000Author Commented:
Fantastic Girionis that works great thanks so muchly! :)
0
 
zzynxSoftware engineerCommented:
girionis is right indeed
0
 
pjcrooks2000Author Commented:
Thanks to everyone else for helping but Girionis had the solution I was looking for ... A appreicate your work for this question
0
 
girionisCommented:
Thank you for accepting, glad problem is solved :)
0
 
pjcrooks2000Author Commented:
Yep even better indeed by using a question box nice one :)
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

  • 5
  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now