键入时显示Eclipse显示数字

时间:2019-02-04 22:13:29

标签: java

我正在尝试将数字添加到“向消息添加数字”文本字段中,当我单击“添加”按钮时,我希望它们在下方显示为列表。当前它不起作用,每次我添加一个新数字时,数字都会被替换。这可能很容易解决,但是我对此并不陌生。

我遇到的第二个问题,例如,如果我在“数字计数”文本字段中输入5,我希望一旦输入第五个数字,“添加”按钮就会消失。当我输入1时,它似乎正常工作,“添加”按钮消失了,但是对于其他任何数字,它均无效。 下图显示了程序的外观。

enter image description here

package client;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import com.sun.glass.events.MouseEvent;
import com.sun.prism.paint.Color;

public class Client {

    public static void main(String[] args) {


        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 700, 800);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Client TCP" );
        frame.getContentPane().setLayout(null);
        frame.setVisible(true);    

        JButton button = new JButton("Connect");
        button.setBounds(400, 40, 150, 20);
        frame.getContentPane().add(button);

        JLabel label = new JLabel("");
        label.setBounds(20, 40, 250, 20);
        label.setForeground(java.awt.Color.RED);
        label.setFont(new Font("Times", Font.BOLD, 12));
        label.setHorizontalAlignment(SwingConstants.LEFT);
        label.setVerticalAlignment(SwingConstants.CENTER);
        frame.getContentPane().add(label);
        label.setText("Connection Status: Not Connected");

         button.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {

                 label.setVisible(false);
                 button.setVisible(false);

                    JButton button = new JButton("Disconnect");
                    button.setBounds(400, 40, 150, 20);
                    frame.getContentPane().add(button);

                     button.addActionListener(new ActionListener() {
                         public void actionPerformed(ActionEvent e) {
                                 System.exit(0);
                            }

                     });    


                    JLabel label = new JLabel("");
                    label.setBounds(20, 40, 250, 20);
                    label.setForeground(java.awt.Color.BLUE);
                    label.setFont(new Font("Times", Font.BOLD, 12));
                    label.setHorizontalAlignment(SwingConstants.LEFT);
                    label.setVerticalAlignment(SwingConstants.CENTER);
                    frame.getContentPane().add(label);
                    label.setText("Connection Status: Connected"); 

                    JButton button2 = new JButton("Set");
                    button2.setBounds(400, 100, 150, 20);
                    frame.getContentPane().add(button2);

                    JLabel label2 = new JLabel("");
                    label2.setBounds(20, 100, 250, 20);
                    label2.setFont(new Font("Times", Font.BOLD, 12));
                    label2.setHorizontalAlignment(SwingConstants.LEFT);
                    label2.setVerticalAlignment(SwingConstants.CENTER);
                    frame.getContentPane().add(label2);
                    label2.setText("Count of Numbers:"); 

                    JTextField textfield= new JTextField("");
                    textfield.setFont(new Font("Times", Font.BOLD, 14));
                    textfield.setBounds(175, 100, 150, 20);
                    frame.getContentPane().add(textfield);

                     button2.addActionListener(new ActionListener() {
                         public void actionPerformed(ActionEvent e) {
                                 button2.setEnabled(false);
                                 label2.setEnabled(false);
                                 textfield.setEnabled(false);


                                    JButton button3 = new JButton("Add");
                                    button3.setBounds(400, 150, 150, 20);
                                    frame.getContentPane().add(button3);

                                    JLabel label3 = new JLabel("");
                                    label3.setBounds(20, 150, 250, 20);
                                    label3.setFont(new Font("Times", Font.BOLD, 12));
                                    label3.setHorizontalAlignment(SwingConstants.LEFT);
                                    label3.setVerticalAlignment(SwingConstants.CENTER);
                                    frame.getContentPane().add(label3);
                                    label3.setText("Add Number to Message:"); 

                                    JTextField textfield2= new JTextField("");
                                    textfield2.setFont(new Font("Times", Font.BOLD, 14));
                                    textfield2.setBounds(175, 150, 150, 20);
                                    frame.getContentPane().add(textfield2);              

                                    JLabel label4 = new JLabel("");
                                    label4.setBounds(20, 200, 250, 20);
                                    label4.setFont(new Font("Times", Font.BOLD, 12));
                                    label4.setHorizontalAlignment(SwingConstants.LEFT);
                                    label4.setVerticalAlignment(SwingConstants.CENTER);
                                    frame.getContentPane().add(label4);
                                    label4.setText("Numbers in Message:");  

                                    JTextArea textarea = new JTextArea();
                                    textarea.setFont(new Font("Times", Font.BOLD, 14));
                                    textarea.setBounds(20, 225, 600, 20);
                                    textarea.setEditable(false);
                                    frame.getContentPane().add(textarea);

                                     button3.addActionListener(new ActionListener() {
                                         public void actionPerformed(ActionEvent e) { 
                                             String data = "";
                                             int clicked = 0;
                                             clicked++;
                                             double x = Double.parseDouble(textfield.getText());
                                              if (clicked == x) {
                                                     button3.setVisible(false);
                                                     label3.setVisible(false);
                                                     textfield2.setVisible(false);

                                                     JButton butSend = new JButton("Send");
                                                     butSend.setBounds(275, 275, 100, 20);
                                                     frame.getContentPane().add(butSend);
                                              }      

                                             if (!textfield2.getText().equals("")) {                                                      
                                                 double y = Double.parseDouble(textfield2.getText());                                               
                                                 data += +y+ ",";                                                                                           
                                                 textarea.setText(data);

                                             }



                                         }
                                     });


                         }           
             });

         }

         });

    }

1 个答案:

答案 0 :(得分:0)

单击添加按钮时,它将覆盖文本字段中的文本。要追加内容,您应该执行以下操作

//a global String to store the number data
String data = "";

然后输入按钮代码

//button listener code
if (!textfield2.getText().equals("")) {  
    double x = Double.parseDouble(textfield.getText());                                                      
    double y = Double.parseDouble(textfield2.getText()); 
    data += y + ",";                                                                                           
    textarea.setText(data);                                               
}

但是对于第二个问题,您可以在文本字段中添加一个侦听器,并且每次更改它都会更新一个计数器变量。 https://stackoverflow.com/questions/3953208/value-change-listener-to-jtextfield.

上有一些文本字段侦听器的示例

总体上,作为一些常规编码建议,我将为按钮和标签命名,以表示它们的作用,另外一些注释和间距也将有助于提高可读性。

哦,在Java中,类名应大写,而程序包名称应像您一样使用小写。

-dogtreat268