2016-05-10 22 views
0

私のAPCSクラスでは、GUIをプログラミングする方法を学習しています。私たちは、ボタンを作って背景色を緑、赤、青などに変える方法を学びました。しかし、先生は今週の残りの日にはここにいません。フレーム内にテキストを表示する方法が不思議でしたもう一度ボタンをクリックするとテキストが消えます。それが助けになるならば、以下はコードです。私は背景色を緑色に変えたいだけでなく、画面に "緑色"を表示したい。手伝ってくれてどうもありがとう!ボタンをクリックしたときにテキストを表示する方法

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 

    public class datBoi extends JFrame implements ActionListener{ 

JButton datBoi; 

public datBoi(String title) 
{ 
    super(title); 

    datBoi = new JButton("dat boi"); 
    datBoi.setActionCommand("dat boi"); 


    datBoi.addActionListener(this); 


    setLayout(new FlowLayout()); 
    add(datBoi); 


} 

public void actionPerformed(ActionEvent evt) 
    { 
    // check which command has been sent 
    if (evt.getActionCommand().equals("dat boi")) 
    { getContentPane().setBackground( Color.green );  

    } 


    repaint(); 
    } 

    public static void main (String[] args) 
    { 
    datBoi demo = new datBoi("Get ready to be memed") ; 

    demo.setSize(420, 420);  
    demo.setVisible(true);  
    } 

}

答えて

1

さらにJLabelを追加してJPanelに追加します。 テキストと緑のテキストを表示するために用意した関数を使用します。 テキストを ""エリアで変更することができます。

コードは以下のようになります:

import java.awt.Color; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

    public class datBoi extends JFrame implements ActionListener{ 

JButton datBoi; 
JLabel jf; 
JLabel label; 

public datBoi(String title) 
{ 
    super(title); 

    datBoi = new JButton("dat boi"); 
    datBoi.setActionCommand("dat boi"); 


    datBoi.addActionListener(this); 
    jf = new JLabel(); 
    JPanel panel = new JPanel(); 
    panel.add(jf); 
    getContentPane().add(panel); 

    setLayout(new FlowLayout()); 
    add(datBoi); 
    JPanel panel2 = new JPanel(); 
    getContentPane().add(panel2); 

    label = new JLabel(); 
    panel.add(label); 

} 

public void actionPerformed(ActionEvent evt) 
    { 
    // check which command has been sent 
    if (evt.getActionCommand().equals("dat boi")) 
    { getContentPane().setBackground( Color.green );  
      if(jf.getText().equals("")){ 
       jf.setText("put your text here"); 
      }else{ 
       jf.setText(""); 
      } 
      label.setText("GREEN"); 
    } 


    repaint(); 
    } 

    public static void main (String[] args) 
    { 
    datBoi demo = new datBoi("Get ready to be memed") ; 

    demo.setSize(420, 420);  
    demo.setVisible(true);  
    } 
} 
-1

この部分は、コンストラクタにする必要があります。

label = new JLabel("Text you want to be seen"); 
    add(label); 

このコードはactionPerformed()メソッドである必要があります。

label.setVisible(!label.isVisible()); // This code will be the change of visibility of the label. 
+0

1) 'のsetVisible(..)'コール(テキストなし/アイコンとラベルがすでに見えない)のための必要はありません。 2)実行時に追加されるコンポーネントは、インスタンス化されて何かに追加されるだけではありません。 3)* "あなたは静的なラベルを宣言するべきです"いいえ、してはいけません。 - 正しいアプローチについては、他の回答を参照してください。 –

+0

1)backgorund colorなしでラベルを使用するかどうかわかりません。 (テキスト/アイコンが表示されていないラベルが常に表示されるわけではありません)。 2)私は誤解があると思うが、追加部分はコンストラクタになければならない。私はそれを意味したが、明らかに私はそれを書いた方が良いはずだった3)私はdatBoiオブジェクトがないと思った、残念私の悪い:D。 –

関連する問題