Как сохранить новое формирование кадра - PullRequest
0 голосов
/ 02 мая 2018

Я новичок в JAVA. Мой вопрос, мой графический интерфейс имеет одну кнопку. Если кнопка нажата, она должна напечатать некоторые тексты в графическом интерфейсе. Но когда я нажал кнопку. Он покажет совершенно новый кадр, а затем покажет тексты. Как я могу сделать все это в одном кадре, и каждый раз, когда я нажимаю кнопку, появляются новые тексты.

1. весь графический интерфейс был построен

package JuiceFactory;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JuiceFactory extends JFrame{
    private CustomTextFeild customTextFeild;
    private CustomButton customButton;
    public JuiceFactory() {
        JFrame jf = new JFrame("Welcome to a Juice Factory");
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel jPanel = new JPanel();
        jPanel.setLayout(new BorderLayout(5,5));
                   jPanel.setBorder(BorderFactory.createLineBorder(Color.GRAY,10));

        customTextFeild = new CustomTextFeild();
        customButton = new CustomButton();


        jPanel.add(customTextFeild,BorderLayout.CENTER);
        jPanel.add(customButton,BorderLayout.EAST);

        customButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                      new Juice();
            }
        });


        jf.setContentPane(jPanel);
        jf.setLocationRelativeTo(null);
        jf.pack();
        jf.setVisible(true);
    }
    public void printMessage(String Message){
        customTextFeild.addText(Message);
    }
}

2. Предпочтение кнопки

 class CustomButton extends JButton  {
    public static int Height = 20,Width=100;
    public CustomButton(){
        setOpaque(true);
        new JButton();
        setText("Order Juice");
    }
    public Dimension getPreferredSize(){
        return  (new Dimension(Width,Height)) ;
    }
}

3.JTextFeild preference

class CustomTextFeild extends JTextArea{
    private  static final int GAP = 5;
    public CustomTextFeild(){
        setOpaque(true);
        setBorder(BorderFactory.createLineBorder(Color.YELLOW,GAP,true));
        setLineWrap(true);
        setText("Juice Producing process.......\n");
    }
    public Dimension getPreferredSize(){
        return  (new Dimension(100,100)) ;
    }
    public void addText(String words){
        append(words+"\n");
    }
}

package JuiceFactory;
//where the program begins
public class Main  extends CustomTextFeild{

        public Main(){
             new Juice();
        }

        public static void main(String[] args) {


            JuiceFactory juiceFactory = new JuiceFactory();

        }
}

4. Показать процедуру

package JuiceFactory;

public class Juice extends JuiceFactory implements Runnable{

    public Juice(){
        Thread t1 =  new Thread(this);
        t1.start();

    }

    @Override
    public void run() {
        try {
            printMessage("Put Fruits into the mixer.......");
            Thread.sleep(3000);
            printMessage("Juice is done!");
        } catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}
...