2016-05-17 6 views
0

私の化学教室では、私の先生から化学に関連するプログラムを作って余分なクレジットを得ることができたと教えてくれました。結局私はA.P.コンピュータサイエンスにいるので、これは良いアイデアだと思っていました。これはこれまでの私のコードですが、Enterキーを押した後でも、必要な文字列を表示することはできません。どんな助けも素晴らしいだろう。ありがとう!JTextFieldsと私の学校プロジェクト

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import javax.swing.*; 

    public class window extends JPanel implements KeyListener { 

     private static final long serialVersionUID = 1L; 
     private JTextField textBox; 
     private String textInput; 

     public window() { 
     textInput = ""; 
     textBox = new JTextField("Enter symbol here:", 30); 
     this.add(textBox); 
    } 

    public void paint(Graphics g) { 
     super.paint(g); 
     g.setColor(Color.CYAN); 
     g.setFont(new Font("", Font.BOLD, 20)); 
     g.drawString("Enter element symbol in text box above.", 110, 50); 
     g.drawString(textInput, 100, 100); 
    } 

    public void keyPressed(KeyEvent e) { 
     int code = e.getKeyCode(); 
     if (code == KeyEvent.VK_ENTER) { 
      textInput = textBox.getText(); 
     } 
     repaint(); 
    } 

    public void keyReleased(KeyEvent e) { 

    } 

    public void keyTyped(KeyEvent e) { 

    } 
} 



import java.awt.Color; 
import javax.swing.JFrame; 

    public class elementRunner { 

     public static void main(String[] args) { 
      window panel = new window(); 
     JFrame frame = new JFrame("Element project ~ By: Harsh Patel"); 
     frame.setBounds(100, 100, 600, 600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     panel.setBackground(Color.RED); 
     frame.setVisible(true); 
     frame.addKeyListener(panel); 
     frame.add(panel); 
    } 
} 
+1

私たちは、あなたの宿題をするためにここにはありませんが、私たちに何を教えて間違っている。あなたはデバブしましたか?あなたは何を試しましたか? – UDKOX

+0

途中で 'setContentPane'を忘れました。 LOL、ちょうど 'add'を見た、気にしない。しかし、それは決してそれをしなかった。 – UDKOX

答えて

0

問題は、それが動作JTextFieldに設定する場合は、JPanelにリスナーを設定しているです。私は以下のコードを添付しますが、多分JLabelsが役に立つかもしれません。つまり、より簡単で、より構造化されています。しかし、レイアウトの仕組みを学ばなければなりません。とにかく、これは私に見える方法です:

ElementRunner.java(大文字の要素)。

public class ElementRunner { 

    public static void main(String[] args) { 
     MyWindow panel = new MyWindow(); 
     panel.setBackground(Color.RED); 

     JFrame frame = new JFrame("Element project ~ By: Harsh Patel"); 
     frame.setBounds(100, 100, 600, 600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.add(panel); 
     frame.setVisible(true); 

    } 
} 

MyWindow.java(ウィンドウは、我々はそれがあなたのことを知っているこのあまりにも汎用的だった、要素のように大文字)

public class MyWindow extends JPanel implements KeyListener { 

    private static final long serialVersionUID = 1L; 
    private JTextField textBox; 
    private String textInput; 

    public MyWindow() { 
     textInput = ""; 
     textBox = new JTextField("Enter symbol here:", 30); 
     textBox.addKeyListener(this); // This line adds the listener to the TextField 
     this.add(textBox); 
    } 

    public void paint(Graphics g) { 
     super.paint(g); 
     g.setColor(Color.CYAN); 
     g.drawString("Enter element symbol in text box above.", 110, 50); 
     g.drawString(textInput, 100, 100); 
    } 

    public void keyPressed(KeyEvent e) { 
     int code = e.getKeyCode(); 
     if (code == KeyEvent.VK_ENTER) { 
      textInput = textBox.getText(); 
     } 
     repaint(); 
    } 

    public void keyReleased(KeyEvent e) { } 

    public void keyTyped(KeyEvent e) { } 
} 
+0

フィードバックをいただきありがとうございました。 – Harsh

関連する問題