选择整数计算
问题描述
- 使用复选框显示给定的一组整数,如图所示,选中一些;
- 单击“全选”按钮,选中所有的复选框;
- 单击“多项选择”按钮,将多个选中整数显示在文本行数组中;
- 在文本行中输入整数,单击“求和”按钮,将各文本行中的非空字符串转换成整数,再计算和并显示结果。
- 若字符串不能转换成整数,采用对话框提示忽略它,并将该文本行清空。
增加要求
- 框架构造方法的参数指定整数个数;
- 使用复选框数组和文本框数组;
- 声明对文本行数组的计算方法如下
public int sum(JTextField[] texts)
代码如下
package book;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AWT extends Frame implements ActionListener{
JTextField [] textbox = new JTextField[6];
JCheckBox [] checkboxs = new JCheckBox[6];
TextField sumField = new TextField();
Button button1,button2,button3;
public AWT() {
super("选择整数计算");
this.setBounds(0, 0, 400, 360);
this.setLayout(null);
String [] str = {"57","15","78","23","51","59"};
for(int i=0;i<str.length;i++) {
checkboxs[i] = new JCheckBox(str[i]);
textbox[i] = new JTextField();
this.add(checkboxs[i]);
this.add(textbox[i]);
checkboxs[i].setBounds(20 , 30+40*i , 60, 40);
textbox[i].setBounds(100 , 40+40*i, 100, 20);
}
this.button1 = new Button("全选");
button1.setBounds(20, 300, 70, 30);
this.add(button1);
button1.addActionListener(this);
this.button2 = new Button("多项选择");
button2.setBounds(100, 300, 70, 30);
this.add(button2);
button2.addActionListener(this);
this.button3 = new Button("求和");
button3.setBounds(180, 300, 70, 30);
this.add(button3);
button3.addActionListener(this);
this.sumField.setBounds(260,300 , 70, 30);
this.sumField.setFont(new Font("TimesRoman",0,18));
this.add(sumField);
this.setVisible(true);
this.addWindowListener(new WinClose());
}
public void Function() {
for(int i=0;i<checkboxs.length;i++) {
if(!checkboxs[i].isSelected())
checkboxs[i].doClick();
}
for(int i=0;i<checkboxs.length;i++)
if(checkboxs[i].isSelected()) {
textbox[i].setText(checkboxs[i].getText());
}
}
public void Function2() {
for(int i=0;i<checkboxs.length;i++)
if(checkboxs[i].isSelected()) {
textbox[i].setText(checkboxs[i].getText());
}
}
public int sum(JTextField[] texts) {
int s=0;
for(int i=0;i<texts.length;i++) {
try {
if(checkboxs[i].isSelected()&&!(texts[i].getText()==""))
s+=Integer.parseInt(texts[i].getText());
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"\""+texts[i].getText()+"\" 不能转换成整数,忽略","消息",JOptionPane.INFORMATION_MESSAGE);
textbox[i].setText("");
}
}
return s;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.button1) {
Function();
}
if(e.getSource() == this.button2) {
Function2();
}
if(e.getSource() == this.button3) {
sumField.setText(Integer.toString(sum(textbox)));;
}
for(int i=0;i<textbox.length;i++) {
if(checkboxs[i].isSelected())
textbox[i].setText(checkboxs[i].getText());
else
textbox[i].setText("");
}
}
public static void main(String[] args) { new AWT(); }
public class WinClose implements WindowListener{
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通