2016-05-10 3 views
0

В моем классе APCS прямо сейчас мы изучаем, как программировать графические интерфейсы. Мы узнали о создании кнопки и изменении цвета фона на зеленый, красный, синий и т. Д. Однако мой учитель не будет здесь всю оставшуюся часть этой недели, и мне было просто интересно, как я могу сделать текст появляться внутри рамки одним нажатием кнопки, и уменьшите текст, когда я снова нажму кнопку. Если это поможет, ниже приведен код. Я хочу изменить цвет фона на зеленый, а также отобразить «зеленый» на экране. Большое вам спасибо за вашу помощь!как сделать текст появляться при нажатии кнопки

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); 

Этот код должен быть в действииПереформированный() метод.

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

1) Там нет необходимости 'SetVisible (..)' вызовов (метки, без текста/значка уже невидим). 2) Компоненты, добавленные во время выполнения, требуют больше, чем просто для создания и добавления к чему-то. 3) * «вы должны объявить ярлык как статический» Нет, вы не должны. - См. Другой ответ для правильного подхода. –

+0

1) Я не знаю, будет ли он/она использовать ярлык без обратного цвета или нет. (метка без текста/значка не всегда невидима). 2) Я думаю, что есть недоразумение, добавляющая часть должна быть в конструкторе. Я имел в виду это, но ясно, я должен был написать это лучше. 3) Я думал, что нет объекта datBoi, извините, мой плохой: D. –

Смежные вопросы