我正在尝试将数字添加到“向消息添加数字”文本字段中,当我单击“添加”按钮时,我希望它们在下方显示为列表。当前它不起作用,每次我添加一个新数字时,数字都会被替换。这可能很容易解决,但是我对此并不陌生。
我遇到的第二个问题,例如,如果我在“数字计数”文本字段中输入5,我希望一旦输入第五个数字,“添加”按钮就会消失。当我输入1时,它似乎正常工作,“添加”按钮消失了,但是对于其他任何数字,它均无效。 下图显示了程序的外观。
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);
}
}
});
}
});
}
});
}
答案 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