Java Swing JLabelの型変換方法と他の数値出力方法

このQ&Aのポイント
  • JavaでGUI作成を行っている者です。自分の作っているゲームでは、JLabelで自分と相手の数値を表示したいですが、JLabelをint型に変換する方法が分かりません。
  • JLabelをint型に変換する方法や、JLabel以外で数値を出力する方法についてお知恵をいただきたいです。
  • この質問は基本的な内容ですが、調べても情報が見つからず困っています。お知恵をお貸しいただけると助かります。
回答を見る
  • ベストアンサー

java swing JLabelの型とは?

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

  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答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++){ ※️︎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 ゲームプログラミング 例外

    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
  • Javaのプログラミング手伝ってください

    以下のソースコードを応用して、添付画像のような数字のかかれた画像を3つ並べてそれを回して7を揃えるというゲームを作りたいのですが全く進みません。どなたか完成させてくださいm(__)m使用する画像のファイル名は「slot1.jpeg」~「slot7.jpeg」です。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; public class OneSlot extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; final int MAX = 7; Timer timer = new Timer(150 , this); JLabel label= new JLabel("スタートで始まるよ",JLabel.CENTER); JButton[] bt = {new JButton("スタート"),new JButton("ストップ")}; JLabel slot= new JLabel(new ImageIcon("Slot1.jpg"),JLabel.CENTER); ImageIcon[] slot_icon = new ImageIcon[MAX]; int iCount = 0; OneSlot(String title) { super(title); timer.setActionCommand("timer"); setBounds(200, 200, 230, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for(int i = 0;i < slot_icon.length; i++) slot_icon[i] = new ImageIcon("Slot" + (i+1) + ".jpg"); add("North",label); add("Center",slot); JPanel p = new JPanel(); for (int i = 0; i < bt.length;i++) { bt[i].addActionListener(this); p.add(bt[i]); } add("South",p); setVisible(true); } public static void main(String[] args) { new OneSlot("スロットマシン"); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("timer")) { if(++iCount == slot_icon.length) iCount = 0; slot.setIcon(slot_icon[iCount]); } if(e.getSource() == bt[0] && !timer.isRunning()) { label.setText("7が当たりだよ"); timer.start(); } else if(e.getSource() == bt[1] && timer.isRunning()) { if(iCount+1 == MAX) label.setText("やった!!おめでとう"); else label.setText("残念でした"); timer.stop(); } } }

  • 画像を分割するには?【パズルゲーム製作】

    プログラミングの勉強のため、 フラッシュゲームによくあるような、 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); } }

  • SwingのJTableについて

    swingなのですが下記のプログラムで実現できない点があります。 1.isCellEditableメソッドを使ってセルを編集可能にしたのですが 編集した文字が消えてしまいます。 2.また、ボタンを配置してボタンを押下時に編集したセルの   行のデータをコンソールに表示したいのですがどうすればいいかわかりません。 3.画面レイアウトがsetLocation(x, y)した位置に表示されません。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class JTableSample4 implements ActionListener { static Vector<String>[] data = new Vector[3]; static JFrame frame; public static void main(String[] args) { frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); JPanel panel1 = new JPanel(); // セルのデータ作成 for (int i = 0; i < 3; i++) { data[i] = new Vector<String>(); } // data[0]に名前、data[1]に住所、data[2]に電話番号 data[0].addElement("鈴木一郎"); data[1].addElement("東京都"); data[2].addElement("xxxxxxxxxx"); data[0].addElement("佐藤花子"); data[1].addElement("千葉県"); data[2].addElement("yyyyyyyyyy"); data[0].addElement("田中浩二"); data[1].addElement("埼玉県"); data[2].addElement("zzzzzzzzzz"); data[0].addElement("小川伸介"); data[1].addElement("新潟県"); data[2].addElement("aaaaaaa"); data[0].addElement("佐藤和也"); data[1].addElement("群馬県"); data[2].addElement("bbbbbbb"); data[0].addElement("渡辺悟"); data[1].addElement("愛知県"); data[2].addElement("ccccccc"); data[0].addElement("橋本智也"); data[1].addElement("愛媛県"); data[2].addElement("ddddddd"); data[0].addElement("永井祐二"); data[1].addElement("栃木県"); data[2].addElement("eeeeeee"); data[0].addElement("細貝昭二"); data[1].addElement("福岡県"); data[2].addElement("fffffff"); data[0].addElement("堀野友光"); data[1].addElement("長野県"); data[2].addElement("gggggggg"); // テーブル作成 TableModel tableModel = new AbstractTableModel() { // 行数 public int getRowCount() { return 10; } // 列数 public int getColumnCount() { return 3; } // row行column列の値をセット public Object getValueAt(int row, int column) { return data[column].elementAt(row); } // タイトル部の値をセット public String getColumnName(int column) { switch (column) { case 0: return "名前"; case 1: return "住所"; case 2: return "電話番号"; } return ""; } /******************セルの編集 可/不可を操作するメソッド**********************/ public boolean isCellEditable(int rowIndex, int columnIndex) { /*0が1カラム目 1が2カラム目なのでこの場合電話番号だけ編集可*/ if (columnIndex == 0 || columnIndex ==1) { /*falseは編集不可*/ return false; } else /*trueは編集可*/ return true; } }; JLabel label = new JLabel("電話番号だけがセルを編集することができます"); label.setLocation(10, 10); label.setSize(300, 20); JButton button = new JButton("Click Me!"); button.setLocation(10, 400); button.setSize(20, 20); //button.addActionListener(); JTable table = new JTable(tableModel); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setLocation(10, 40); scrollPane.setSize(750, 180); panel1.add(button); panel1.add(label); panel1.add(scrollPane); panel1.setBounds(10, 10, 800, 230); frame.add(panel1); frame.setSize(800, 600); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("test"); } }

    • ベストアンサー
    • Java
  • Jave Swing 画像表示わからない

    java swingでGUIをプログラミングしている者です。 JLabelにImageIconの画像を貼り付けるプログラムです。↓ //画像を表示するプログラム //インポート import javax.swing.*; import java.awt.*; import java.awt.event.*; class gazopro extends JFrame{ JLabel l1; JButton b1; JPanel p; public static void main(String args[]) { //ウィンドウを作成また設定 gazopro frame = new gazopro(); frame.setBounds(300,200,700,400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } gazopro(){ //コンポーネントを作成 p = new JPanel(); add(p); b1 = new JButton("画像を表示"); p.add(b1); ImageIcon icon = new ImageIcon("image.jpg"); l1 = new JLabel(icon); p.add(l1); } }   わからないところは、ImageIcon icon = new ImageIcon("image.jpg");のところです。 ImageIconの引数は、プログラミングを行っているパソコン(OS は Windows)のマイコンピューター→ Cドライブ→ MyJava→ image.jpgを指定しましたがこれで合ってますか? このプログラムでは、画像が表示されませんでした。 どうすればいいでしょうか? 解説と、ご指導宜しくお願いします。

    • ベストアンサー
    • Java
  • javaプログラムについて

    javaのプログラムで入力項目をDBに書き込むというプログラムを作成しているのですが、 コンソール形式だと成功するのですが、テキストボックスなどをおいて、GUI形式でやろうとするとキーイベントの中の変数ににうまく値が参照されません 以下ソース import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import java.awt.Container; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Date; class meibo3 extends JFrame implements KeyListener { public static void main(String args[]) { meibo3 frame = new meibo3("タイトル"); frame.setVisible(true); } // private String name; // private String shu; // private int id; // private int su; meibo3(String title) { setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setLayout(null); JLabel lmeibo = new JLabel("【名簿入力】", SwingConstants.CENTER); lmeibo.setBounds(100, 10, 80, 30); JLabel lgakuno = new JLabel("学生番号", SwingConstants.CENTER); lgakuno.setBounds(30, 40, 80, 30); JLabel lname = new JLabel("氏 名", SwingConstants.CENTER); lname.setBounds(200, 40, 80, 30); JLabel lshu = new JLabel("入力を終了しますか?(Y/N)"); lshu.setBounds(30, 120, 200, 30); JTextField gaku = new JTextField(4); gaku.setBounds(30, 70, 80, 30); JTextField namae = new JTextField(20); namae.setBounds(200, 70, 80, 30); JTextField y = new JTextField(20); y.setBounds(200, 120, 20, 30); y.addKeyListener(this); ; p.add(lmeibo); p.add(lgakuno); p.add(lname); p.add(gaku); p.add(namae); p.add(y); p.add(lshu); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); int id = Integer.valueOf(gaku.getText()).intValue(); String name = namae.getText(); int nsu = namae.getText().length(); String yn =y.getText(); //method(id,name,nsu,yn); } public void keyPressed(KeyEvent ke) { // TODO 自動生成されたメソッド・スタブ if (ke.getKeyCode() == ke.VK_ENTER) { //private void method(int id, String name, int nsu, String yn){ Date d = new Date(); SimpleDateFormat dfd = new SimpleDateFormat("yyyy-MM-dd"); Connection con = null; String day = dfd.format(d); // System.out.print(day); PreparedStatement ps = null; try { // ドライバクラスをロード Class.forName("com.mysql.jdbc.Driver"); // データベースへ接続 con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/hellodb", "root", "root"); Statement stmt = (Statement) con.createStatement(); // name,bloodType,ageのデータを検索するSQL文を作成 String sql = "INSERT INTO hellodb.meibo VALUES(" + id + ",'" + name + "','" + day + "');"; System.out.println(sql); if (id > 4 && nsu > 20) { // JOptionPane.showMessageDialog(this, "学生番号が4桁以上、氏名が20文字以上になっています。", "Error", // JOptionPane.ERROR_MESSAGE); } else { if (id < 5) { // JOptionPane.showMessageDialog(this, // "学生番号が4桁以上になっています", "Error", // JOptionPane.ERROR_MESSAGE); } else { if (nsu > 20) { // JOptionPane.showMessageDialog(this, // "氏名が20文字以上になっています。", "Error", // JOptionPane.ERROR_MESSAGE); } else { if (yn.equals("y") || yn.equals("y") || yn.equals("Y") || yn.equals("Y")) { // ps = con.prepareStatement(sql); stmt.execute(sql); // JOptionPane.showMessageDialog(this, // "成功しました", "Info", // JOptionPane.INFORMATION_MESSAGE); } else if (yn.equals("n") || yn.equals("n") || yn.equals("N") || yn.equals("N")) { } } } } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { // close処理 if (ps != null) { ps.close(); } // close処理 if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } public void keyReleased(KeyEvent arg0) { // TODO 自動生成されたメソッド・スタブ } public void keyTyped(KeyEvent arg0) { // TOD

  • JAVA NetBeans タイマーでのラベル

    MacでNetBeans7.3.1を使ってる初心者です。 タイマーにチャレンジしてるのですが、 出力にはちゃんと表示できてるようですが、 ラベルに表示できなく、エラーがでます。 たぶんラベルの使い方がおかしいんだと思いますがどうすればよいか分かりません。 ご教授よろしくお願い致します。 下記URLはスクリーンショットです。 http://mokkori0710.web.fc2.com/netbeans.jpg public static void main(String args[]) { new NewJFrame().setVisible(true); JLabel jLabel1 = new JLabel(); Timer timer01 = new Timer();//タイマーを作成 timer01.scheduleAtFixedRate(new TimerTask() { int i=0; String str; public void run() { i+=1; str=Integer.toString(i); //jLabel1.setText(str); System.out.println(str); } }, 0, 1000);//時間の間隔 1000=1秒 }

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

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

    • ベストアンサー
    • Java

専門家に質問してみよう