• ベストアンサー
  • すぐに回答を!

java swing JLabelの型とは?

javaでGUI作成、すなわちSwingを行っている者です。 教えて!gooでたくさんの質問をし、たくさんの回答をしてくださった皆様のおかげで、game制作に取りかかることにしました! 本当にありがとうございました。 本題に入りますが、私の作ってるgameの内容は、単純で自分の体力を1000とし、相手の体力を100にして何体倒せるかというサバイバルゲームです。 そこで困ってしまったのが自分と相手の数値をどう出力するかということ、そしてJLabelで自分と相手の数値を出力し、型変換してint型にすればいいんだと思いつきましたが、これが失敗。JLabelをString型だと思っていた私は、String➡intに変換しようとしたんですが、JLabelはString型ではないといわれてしまいました。 JLabelを型変換してint型にするにはどうすればいいでしょうか? 又SwingでJLabel以外に数値を出力する方法はあるよ、という意見がありましたらご指摘お願いします。 こんなの基本だよ!と思われるかもしれませんが、どのサイト教材を調べても分からなかったので質問させていただきました。よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1028
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

こんにちは。 もうちょっと基本を学んだほうが良いです。 JLabelというのがそのまま型です。String型はStringです。 JLabel label = new JLabel();と出来るものはそれが型だと思ってもらって良いです。 http://docs.oracle.com/javase/jp/6/api/ JLabelより値を取得したいのであればgetText()を利用します。 http://docs.oracle.com/javase/jp/6/api/javax/swing/JLabel.html#getText() ここを見るとString型が返ってくるのがわかります。 それをInteger.parseInt()でパースすればint型にはなります。 ただ、通常は逆の持ち方が一般的だと思います。 int型で数値を持っておいて、表示する際にそのint型をJLabelに表示してあげるイメージです。 label.setText ( String.valueOf(int体力) ); そうしないといちいち計算するときにJLabelから値を取得してパースする必要が出てきます。 計算は沢山利用するかもしれないけど表示する場所は1箇所と考えるとこう持ったほうが良いです。 せっかくJavaですので各データの持ち方も自分クラスや敵クラスといったクラスを作ってあげてそのクラス内にいろいろなパラメータを持つように設計すると良いです。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 型変換の質問

    どうしても考えてもわからないので投稿します。 Q1.以下の3つの型変換処理を実行せよ ・型変換(1)(int⇒String) ・型変換(2)(int⇒Double) ・型変換(3)(String⇒int) の、問題なのですがどうしても出力できません。 どなたか教えてください。

  • swing java

    プログラムの読める方 java swingです。 http://www.atmarkit.co.jp/ait/articles/0502/05/news012_2.html のURLを参考に自分なりにプログラムをアレンジしてる最中です。 配列の中の数字を「文字」に変えlongをStringに変更しました。 以下ソースです。 public class Sampie63 { public static void main(String[] args) { String[] bd = new String[]{ "みかん","りんご","ごりら","らっぱ" };//配列の中の数字を「文字」に変えlongをStringに変更 for (int i=0; i<bd.length; i++){ ※&#65039;&#65038;if (bd[i] != 0){ System.out.println(bd[i]); } } System.out.println("----"); String[] bd2 = bd; for (int i=0; i<bd2.length; i++){ ※if(bd2[i] != 0){ System.out.println(bd2[i]); } } } } ※マークがエラー箇所で2点です。 エラーメッセージは Exception in thread "main" java.lang.Error: Unresolved compilation problems: Incompatible operand types String and int Incompatible operand types String and int at Sampie63.main(Sampie63.java:9) で未解決の問題があり矛盾してる箇所があるという意味だと思うのですが お時間のある方だけで無理には結構です。 ピンポイントで大丈夫なので答えられる方が入ればお願いします。

    • ベストアンサー
    • Java
  • [JAVA]互換性のない型です・・・その理由。

    こんにちわぁ♪ String[][][] TEST = (String[][][])request.getAttribute("MENU"); int TEST_neo = Integer.valueOf(TEST[0][0][3]); としてコンパイルしますと、互換性のない型ですというエラーがきてできません。 Strign→Integerの変換ってできますよね?? 配列にしてるからかな・・・?? 宜しくお願い致します。

    • ベストアンサー
    • Java
  • [C#]型変換について教えてください。

    ◆int型のリスト「 List<int>」に変換したいです。 以下、ソースの一部を記述します。 ***********ソースの一部*********** string str; Console.Write("4桁の数値->"); str = Console.ReadLine(); *************************************** ■現状 ・string型の変数"str"に、キーボードからの値入力を許容。 ■質問 2つあります。よろしくお願いいたします。 1. 要素の型「string」からint型のリスト「 List<int>」に変換する方法はありませんか? 2. キーボードからの値入力でint型のリスト「 List<int>」に直接入力することはできませんか? 拙い知識のため要領を得ない質問かもしれませんが、ぜひご教示ください。

  • 【Java】数字の判定、Stringへの型変換

    コマンドライン引数を渡して(桁数は様々)、 渡ってきた値が数字のみの場合は値をそのまま出力、 数字のみでなければ1文字ずつ縦に出力するプログラムを作りたいです。 Exceptionを発生させたり正規表現で判定するのではなく、 isNumericを使いたいのですが、型が違うので使えません。 1文字ずつ出力するのはcharAtかなと思ったのですがこれも型が違う。 型変換するにもどこですればいいのか分からず… どこを変えれば良いのか教えて下さい。 public class Test1 { public static void main(String[] args) { if(StringUtils.isNumeric(args)){ System.out.println(args); }else{ for(int i = 0; i<args.length; i++){ System.out.println(args.charAt()); } } } }

    • ベストアンサー
    • Java
  • 画像を分割するには?【パズルゲーム製作】

    プログラミングの勉強のため、 フラッシュゲームによくあるような、 15パズルを作ろうと思っています。 使用言語はJavaのSwingです。 最初に、次のようなコードで、 パズルに使用する画像をラベルに追加しましたが、 この画像を4*4に分割する方法が見つかりませんでした。 Icon icon = new ImageIcon(imageAddress[0]); int iconHeight = icon.getIconHeight(); int iconWidth = icon.getIconWidth(); JLabel lbl = new JLabel(icon); どうすればいいかアドバイスをいただけると助かります。 また、ゲーム作りや、画像処理関係で、 参考になる書籍などもあれば教えてほしいです。 よろしくお願いします。 参考になるかわかりませんが、 以下に全ソースをのせておきます。 import javax.swing.*; public class Game15 extends JFrame{ private static final long serialVersionUID = 1L; String[] imageAddress = { "2506723431_fe31da9b39.jpg", "2507551314_4800225620.jpg", "2949837591_e2ef3f5515.jpg", "3098905192_b7aa1f5715.jpg", "3830931070_76a5b67b85.jpg", "3830931616_16c6ef11ee.jpg"}; public Game15(String s){ super(s); JPanel p0 = new JPanel(); Icon icon = new ImageIcon(imageAddress[0]); int iconHeight = icon.getIconHeight(); int iconWidth = icon.getIconWidth(); JLabel lbl = new JLabel(icon); p0.add(lbl); add(p0); setSize(iconWidth + 16,iconHeight + 40); } public static void main(String[] args){ Game15 game15 = new Game15("15パズル"); game15.setDefaultCloseOperation(EXIT_ON_CLOSE); //game15.setSize(iconWidth,300); game15.setLocationRelativeTo(null); game15.setVisible(true); } }

  • javaの不思議

    C言語をたしなむ程度にやっているものです。 Javaを勉強していたのですが、不思議だなと思ったので質問させてください。 Integer value = new Integer(30); value.doubleValue() // <- double型に変換している このプログラムだとvalueはintなのにあらかじめdoubleに変換できることを想定しています。 C言語の癖なのかしらないですが、型変換をするならクラスメソッドではなくキャストするか、 メソッドに投げる(Integer.toString←stringにする例ですが)。 この2つの方法が自然な型変換だと思うのですが、変でしょうか?

    • ベストアンサー
    • Java
  • 配列の型判定の仕方

    メソッドの引数をObjectにして、その引数の型を判定しようとしています。 たとえば以下のような感じです。 String hoge(Object para) { if(para.equals(java.lang.Integer.class)) { return "intです"; } return "わかりません" } 上記は、int型なら判定できるメソッドですが、int[]やString[]を判定するためにはどうしたらよいのでしょうか? paraにint[]型の値が入ってきた場合、 para.equals(java.lang.Integer[].class) としてもtrueにはなりませんでした。 どうすればできるのか、ご教授いただけると幸いです。 手段がなければ、para.getClass().toString()をして出力される文字列で判定しようかと思っています。

    • ベストアンサー
    • Java
  • Java ゲームプログラミング 例外

    JavaでSwing GUIプログラミングをしている者です。 初めて自分で1からプログラムを組んで、念願のゲームを作るということになりました。 自分が作っているゲームは、サバイバルゲームで自分の体力1000相手100でどれだけ倒せるか、というゲームです。 まだ、攻撃してダメージを与えるや、相手の数は一体だったりします。初の挑戦なのでご了承ください。 プログラム↓(長いかも) //ゲームサバイバル import java.awt.*; import javax.swing.*; import java.awt.event.*; class startgame { //スタート画面クラス public static JButton b1start; public static JPanel p1,p2; //p2はスタートボタンを押した後にでるJPanel public static JLabel l1; startgame start = new startgame(); startgame(){ p1 = new JPanel(); p1.setLayout(new BorderLayout()); p1.setBackground(Color.green); p2 = new JPanel(); p2.setLayout(new BorderLayout()); p2.setBackground(Color.green); b1start = new JButton("GAME START"); b1start.setForeground(Color.red); Font font = new Font(Font.SERIF,Font.BOLD,50); p1.add(b1start); l1 = new JLabel("SURVIVAL GAME"); l1.setFont(font); p1.add(l1,BorderLayout.NORTH); } } class Teki{ //敵クラス public static JLabel l0icon,l0p; public static ImageIcon Ticon; static int yourP; Teki teki = new Teki(); Teki(){ ImageIcon Ticon = new ImageIcon("./.jpeg"); //相手の画像 l0icon = new JLabel(Ticon); startgame.p2.add(l0icon,BorderLayout.CENTER); l0p = new JLabel("100"); //相手体力 int yourP = Integer.parseInt(l0p.getText()); //JLabelをint型に型変化 startgame.p2.add(l0p,BorderLayout.EAST); } } class Jibun{ //自分クラス public static JLabel l0p2; public static JButton kogeki; Jibun jibun = new Jibun(); Jibun(){ l0p2 = new JLabel("1000"); startgame.p2.add(l0p2,BorderLayout.WEST); //自分の体力 kogeki = new JButton("攻撃"); startgame.p2.add(kogeki,BorderLayout.WEST); //攻撃ボタン } } class maingame extends JFrame implements ActionListener{ public static void main(String[] args) { //はじめ maingame frame = new maingame(); frame.setBounds(200,200,700,400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } maingame(){ super("サバイバルゲーム"); add(startgame.p1); startgame.b1start.addActionListener(this); Jibun.kogeki.addActionListener(this); } public void actionPerformed(ActionEvent e){ Object obj = e.getSource(); if(startgame.b1start == obj) { startgame.p1.add(startgame.p2); //スタートボタンの処理 } else if(Jibun.kogeki == obj){ System.out.println("攻撃した"); //攻撃処理 } } これをコンパイルすると、このような例外が出ます。↓ Exception in thread "main" java.lang.NullPointerException at java.awt.Container.addImpl(Unknow Source) at java.awt.Container.add(Unknow Source) at javax.swing.JFrame.addImpl(Unknow Source) at java.awtContainer.add(Unknow Source) at maingame.<init>(maingame.java:88) at maingame.main(maingame.java:77) となります。 これは、どうすれば解決できますか? 他にも、「ここはこうしたほうがいい」などがありましたら、どんどんご指摘ください。

    • ベストアンサー
    • Java
  • C++/CLIにて、System.String^型からChar*への変換。または、fopen_s以外のファイル出力方法

    現在、VisualC++2005の「空のCRLプロジェクト」からコツコツプログラムを組んでいます。 ファイルを読み込む→処理→他のファイルに結果を出力という単純なプログラムなのですが、入力、出力ファイル名を共に、コンソール画面から入力するというところで困っています。 コンソールから読み込みについては、バッチの利用も考えてmain関数で、  int main(array<String^>^ (変数名)) とし、String^型でファイル名を読み込みました。 しかし、実際にファイルを呼び出す際には、  fopen_s(&fp, (char*型ファイル名) ,"a"); を利用するため、char*型に変換しなければなりません。 ToCharArrayを試しましたが、 'cli::array<Type,dimension> ^' から 'char *' に変換できません。 とエラーが出ますし(過去の質問にもあります)、キャストも同様です。 ファイル名の読み込みをchar*にもしてみましたが、String^にするようにとのエラーが出ました。 何か良い解決方法はないでしょうか。 (1)String^型からChar*へ変換する (2)String^型でファイルを開く(fopen_s以外の)関数を探す などの解決法があると思いますが、どちらでもかまいません。 ご存知の方、よろしくお願いします。 情報が不足していましたら、どのような情報が必要かもお教えください。 よろしくお願いします。