前提・実現したいこと
Eclipseでゲームを作っております。
標準出力でコンソールに出てくる内容をGUIに反映させたい。
発生している問題
ネットで調べ「コンソール内容をtextAreaに出力できるやり方」など
調べましたが実装がうまく行かずお手上げ状態です。
全く解決の糸口が見えず納期に間に合わせることが
できず焦りが募ってます。
該当のソースコード
package game; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; public class GameScreenE extends JFrame implements ActionListener { int answer[]= new int[3]; int count = 0, hit =0 ,blow =0; JComboBox<Integer> btn1 = new JComboBox<Integer>(); JComboBox<Integer> btn2 = new JComboBox<Integer>(); JComboBox<Integer> btn3 = new JComboBox<Integer>(); public void init() { this.setTitle("game"); //フレームの設定(タイトル・サイズ・位置 this.setTitle("game"); this.setBounds(100, 100, 400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel ps = new JPanel(); JPanel pn = new JPanel(); JPanel pc = new JPanel(); JLabel label1 = new JLabel("?"); JLabel label2 =new JLabel("?"); JLabel label3 =new JLabel("?"); label1.setFont(new Font("MS ゴシック", Font.BOLD, 50)); label2.setFont(new Font("MS ゴシック", Font.BOLD, 50)); label3.setFont(new Font("MS ゴシック", Font.BOLD, 50)); JLabel label4 = new JLabel("<html>※○は場所も数字も合ってます。" + "<br>△は数字だけ合ってます。(" + count + ")"); label4.setFont(new Font("MS ゴシック", Font.BOLD, 10)); pn.add(label1); pn.add(label2); pn.add(label3); this.getContentPane().add(pn,BorderLayout.NORTH); pc.add(label4); this.getContentPane().add(pc,BorderLayout.CENTER); for(int i=1; i<=6; i++) { btn1.addItem(i); btn2.addItem(i); btn3.addItem(i); } JButton btn4 = new JButton("チェック"); btn4.addActionListener(this); ps.add(btn1); ps.add(btn2); ps.add(btn3); ps.add(btn4); this.getContentPane().add(ps,BorderLayout.SOUTH); this.setVisible(true); JPanel p = new JPanel(); JTextArea area1 = new JTextArea(); p.add(area1); this. getContentPane().add(p, BorderLayout.CENTER); for (int i = 0; i < answer.length; i++) { boolean sw = false; answer[i] = (int) (Math.random() * 6 + 1); do { sw = false; for (int j = i - 1; j >= 0; j--) { if (answer[i] == answer[j]) { sw= true; answer[i] = (int) (Math.random() * 6 + 1); } } } while (sw == true); } } @Override public void actionPerformed(ActionEvent e) { // TODO 自動生成されたメソッド・スタブ JButton btn = (JButton)e.getSource(); String txt = btn.getText(); if (txt.equals("チェック")) { //入力された値を取り出す Integer data1 = (Integer)btn1.getSelectedItem(); Integer data2 = (Integer)btn2.getSelectedItem(); Integer data3 = (Integer)btn3.getSelectedItem(); //答えの数字3つと、入力された数字3つを答え合わせする。 //配列設定 int datas [] = new int[3]; datas[0] = data1; datas[1] = data2; datas[2] = data3; hit = 0; blow = 0; for (int i = 0; i < answer.length; i++) { for (int j = 0; j < answer.length; j++) { if (i == j && datas[i] == answer[j]) { hit++; } else if (datas[i] == answer[j]) { blow++; } } } } count++; System.out.println(count+"回目 \n○ " + hit + " △" + blow); if (hit == 3) {//分岐点。 終われば画面4 超えれば画面5 ClearScreen cls = new ClearScreen(); cls.init();//初期化。 } if(count == 15) {//Easy OverScreen ovs =new OverScreen(); ovs.init(); } } }
補足情報(FW/ツールのバージョンなど)
Eclipse2019-09を使用しています。
先日にも掲示したのですが頼れるのはここの方々だけです。
よろしくお願い致します。
当方も一生懸命理解に努めます。
回答2件
あなたの回答
tips
プレビュー