题目要求:计算素数,输入一个整数,计算2~该整数之间的所有素数,并显示在表格中。如果输入的格式有误,弹出错误框提示重新输入。
package shiyan3; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class SUshu extends JFrame implements ActionListener { private JTextField text_str; private JButton button_str=new JButton("黑色"); private JTable table; JLabel label,label_1; ImageIcon background; private Font font; private Object EXIT_ON_CLOSE; Container c = this.getContentPane();//创建一个容器,方便向框架内添加组件 private DefaultTableModel model;// 全局表格模型,用来处理数据 String s; String[] columnNames = {" "," "," "," ","素数 "," "," "," "," "};// 定义表格列 public SUshu() { super("素数计算器");//窗口标题 //this.setTitle(" "); this.setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel=new JPanel(); this.setBounds(400, 200,400,300);//设置位置和尺寸 this.font = new Font("楷体", Font.PLAIN, 15);//设置字体格式。 label = new JLabel(); label.setText("请输入整数"); label.setForeground(Color.RED);//字体颜色 label.setFont(font);//字体格式 panel.add(label); this.text_str = new JTextField(""); // 文本行组件,在这里面输入要查询的字符串 this.text_str.setCaretPosition(text_str.getText().length());// this.text_str.setColumns(10); //文本行长度尺寸。 this.text_str.setFont(font);//输入文本字体格式。 panel.add(text_str); c.add(panel, BorderLayout.NORTH);//边界布局,设置在北。 this.text_str.addActionListener(this);//回车键查询。 button_str=new JButton("查询");//按键查询。 panel.add(button_str); button_str.setForeground(Color.BLUE);//按钮字体颜色 button_str.setFont(font);//按钮字体格式 button_str.addActionListener(this); model = new DefaultTableModel(columnNames, 0); table = new JTable(model);//表格 JScrollPane sc = new JScrollPane(table);//滚动窗格 c.add(sc); table.setRowHeight(20);// 设置行高20像素 // this.fireTableDataChanged(); this.setVisible(true); } private void setDefaultCloseOperation(Object eXIT_ON_CLOSE2) { // TODO Auto-generated method stub } @Override public void actionPerformed(ActionEvent ev) { if (ev.getSource() == this.text_str||ev.getSource() == this.button_str)//ev.getSource()获取当前事件源组件,比较引用。 { model.setRowCount(0); s = text_str.getText(); double double_1; try { double_1= Double.parseDouble(s); long x[]=new long[9999999]; if(double_1>=2&&double_1%1==0) { long long_1=(long)double_1; long i,j; int a=0; for(i=2;i<=long_1;i++) { for (j = 2; j <= i; j++) { if (i % j == 0) break; } if(i==j) { x[a]=i; a=a+1; } } int c=a/9+1; model.setRowCount(c); int d=0; for(int y=0;y<c;y++) { for(int b=0;b<9;b++) { if(x[d]==0) { break; } else { model.setValueAt(x[d++], y, b);//设置y行第一列单元的值 } } } } else { JOptionPane.showMessageDialog(this, "请输入大于1的整数"); /*model.setRowCount(1); String[] Str= {"请","输","入","大","于","1","的","整","数"}; for (int row = 0; row < Str.length; row++) { model.setValueAt(Str[row] + "", 0, row); }*/ } } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(this, "请输入大于1的整数"); } } } public static void main(String[] args) { new SUshu(); } }运行效果如下图所示: 一:当输入的数据正确无误 二:当输入小于2、小数或者字符串的时候,弹出对话框提示重新输入