Hey, so I'm trying to make a text-based game using mostly Swing GUI; the code I have so far is below. When I use JOptionPanes I modify the icon, title, and suchlike on them, so I have about two lines of code for every JOptionPane. I created methods for them so I wouldn't have to retype the specs each time. The one for the MessageDialog works fine, but the InputDialog doesn't seem to recognize my String as a String; it gives an incompatible type error. It is reading my String as simply and Object and I don't know why. Any ideas?

import javax.swing.*;
import java.util.*;

public class Game2
	public static Icon sword=new ImageIcon();

	public static void message(String m) //using these methods because I have specs for each JOptionPane that I don't
	{									 //want to type every time I use one.  This one works fine.
		JOptionPane.showMessageDialog(null, m, "Game", JOptionPane.INFORMATION_MESSAGE, sword);
	public static String input(String i) //this one, however, gives an "incompatible types" error
		String userInput;
		userInput=JOptionPane.showInputDialog(null, i, "Game", JOptionPane.INFORMATION_MESSAGE, sword, null, null);
		return userInput;
	public static void main(String[] args)
		message("Hello!  Welcome to my game!");
		input("Please enter your name.");
8 Years
Discussion Span
Last Post by pi_lord12

Please post full text of error message here. It makes it a lot faster and can have more and correct info about the problem.

Read the API doc for the method you are using. What does it return?

Edited by NormR1: n/a


Here's the full error message I'm getting:

--------------------Configuration: <Default>--------------------
C:\Documents and Settings\mekks\My Documents\Computer Science\Java Programs\Game2.java:16: incompatible types
found : java.lang.Object
required: java.lang.String
userInput=JOptionPane.showInputDialog(null, i, "Game", //error is here
1 error

Process completed.


As for reading the API, how do you do that? I'm unfamiliar with it.


Application Programming Interface documentation.
"This document is the API specification for version 6 of the Java™ Platform, Standard Edition."

Where do you get documentation for how to use classes? This is the bible!


Haha right, sorry, I wasn't familiar with the name but I use it all the time (it is the Bible!). I believe I am doing exactly what it says with regard to using the method, though, and it still recognizes my String as an Object...I am at a loss.


You have typed this:

userInput=JOptionPane.showInputDialog(null, i, "Game", JOptionPane.INFORMATION_MESSAGE, sword, null, null);

According to the API doc, this is the method signature for showInputDialog that you are using:

public static Object showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue) throws HeadlessException

You could try explicitly casting to a String?


I think you need "Type Cast".

userInput=(String)JOptionPane.showInputDialog(null, i, "Game", JOptionPane.INFORMATION_MESSAGE, sword, null, null);

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.