第一次完整的写一个JAVA图形界面程序--留此纪念!!
最终效果如图!
可以设置随机数产生的范围;
可以设置需要产生随机数的个数;
可以设置产生的随机数是否能重复(如果不能重复,那么个数不能大于区间)
import java.awt.*;
import java.awt.event.*;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.swing.*;
public class FrameMain extends JFrame{
String s1;
String s2;
String s3;
int s4;
String sss4;
boolean chongfu;
private static final long serialVersionUID = 1L;
public FrameMain(){
setTitle("随机数生成器");
setSize(260,240);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
//创建窗口容器
Container cp=getContentPane();
//定义为网格组布局
getContentPane().setLayout(new GridBagLayout());
/
final JLabel j1=new JLabel("区间最小值:",SwingConstants.CENTER);
final GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridy = 0;// 起始点为第1行
gridBagConstraints.gridx = 0;// 起始点为第1列
gridBagConstraints.weightx = 50;// 第一列的分布方式为10%
gridBagConstraints.weighty = 15;// 第一列的分布方式为10%
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.fill=GridBagConstraints.CENTER;
getContentPane().add(j1, gridBagConstraints);
final JLabel j2=new JLabel("区间最大值:",SwingConstants.CENTER);
final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();
gridBagConstraints_1.gridy = 1;// 起始点为第2行
gridBagConstraints_1.gridx = 0;// 起始点为第1列
gridBagConstraints_1.fill = GridBagConstraints.BOTH;
gridBagConstraints_1.fill = GridBagConstraints.CENTER;
gridBagConstraints_1.weighty = 15;// 第一列的分布方式为10%
getContentPane().add(j2, gridBagConstraints_1);
final JLabel j3=new JLabel("随机数个数:",SwingConstants.CENTER);
final GridBagConstraints gridBagConstraints_2 = new GridBagConstraints();
gridBagConstraints_2.gridy = 2;// 起始点为第3行
gridBagConstraints_2.gridx = 0;// 起始点为第1列
gridBagConstraints_2.weighty = 15;// 第一列的分布方式为10%
gridBagConstraints_2.fill = GridBagConstraints.BOTH;
gridBagConstraints_2.fill=GridBagConstraints.CENTER;
getContentPane().add(j3, gridBagConstraints_2);
final JRadioButton jc=new JRadioButton("是否重复");
final GridBagConstraints gridBagConstraints_3 = new GridBagConstraints();
gridBagConstraints_3.gridy = 3;// 起始点为第4行
gridBagConstraints_3.gridx = 0;// 起始点为第1列
gridBagConstraints_3.weighty = 15;// 第一列的分布方式为10%
gridBagConstraints_3.fill = GridBagConstraints.BOTH;
//
gridBagConstraints_3.fill=GridBagConstraints.CENTER;
getContentPane().add(jc, gridBagConstraints_3);
final JTextField jt1=new JTextField("1");
final GridBagConstraints gridBagConstraints_4 = new GridBagConstraints();
gridBagConstraints_4.gridy = 0;// 起始点为第2行
gridBagConstraints_4.gridx = 1;// 起始点为第1列
gridBagConstraints_4.weightx = 50;// 第一列的分布方式为10%
gridBagConstraints_4.fill = GridBagConstraints.BOTH;
getContentPane().add(jt1, gridBagConstraints_4);
final JTextField jt2=new JTextField("9");
final GridBagConstraints gridBagConstraints_5 = new GridBagConstraints();
gridBagConstraints_5.gridy = 1;// 起始点为第2行
gridBagConstraints_5.gridx = 1;// 起始点为第2列
gridBagConstraints_5.fill = GridBagConstraints.BOTH;
getContentPane().add(jt2, gridBagConstraints_5);
final JTextField jt3=new JTextField("1");
final GridBagConstraints gridBagConstraints_6 = new GridBagConstraints();
gridBagConstraints_6.gridy = 2;// 起始点为第3行
gridBagConstraints_6.gridx = 1;// 起始点为第2列
gridBagConstraints_6.fill = GridBagConstraints.BOTH;
getContentPane().add(jt3, gridBagConstraints_6);
final JButton jb=new JButton("立即生成");
final GridBagConstraints gridBagConstraints_7 = new GridBagConstraints();
gridBagConstraints_7.gridy = 3;// 起始点为第4行
gridBagConstraints_7.gridx = 1;// 起始点为第2列
gridBagConstraints_7.fill = GridBagConstraints.BOTH;
gridBagConstraints_7.fill=GridBagConstraints.CENTER;
getContentPane().add(jb, gridBagConstraints_7);
final JTextArea jt4=new JTextArea("",4,1);
jt4.setLineWrap(true);
jt4.setFont(new Font("宋体", Font.PLAIN, 20));
jt4.setEditable(false);//可换行
final JScrollPane js=new JScrollPane(jt4);
final GridBagConstraints gridBagConstraints_8 = new GridBagConstraints();
gridBagConstraints_8.gridy = 4;// 起始点为第5行
gridBagConstraints_8.gridx = 0;// 起始点为第1列
gridBagConstraints_8.gridwidth = 2;// 组件占用两行
gridBagConstraints_8.weighty = 40;// 第一列的分布方式为10%
gridBagConstraints_8.fill = GridBagConstraints.HORIZONTAL;
getContentPane().add(js, gridBagConstraints_8);
//按键添加监控事件
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
//随机数生成代码
if (jc.isSelected()){
chongfu=true;
}else chongfu=false;
s1= jt1.getText();
s2= jt2.getText();
s3= jt3.getText();
int sss1=Integer.parseInt(s1);
int sss2=Integer.parseInt(s2);
int sss3=Integer.parseInt(s3);
//创建RandomC对象,调用getLod方法返回结果
RandonC rc = new RandonC(sss1,sss2,sss3,chongfu);
//将结果载入文本框4
jt4.setText(rc.getlod().toString());
}
});
setVisible(true);
}
public static void main(String[] args) {
new FrameMain();
}
}
以上是界面
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RandonC {
private int low;
private int high;
private int num;
private boolean chongfu;
RandonC() {
}
public RandonC(int low, int high, int num, boolean chongfu) {
this.low = low;
this.high = high;
this.num = num;
this.chongfu = chongfu;
}
public StringBuffer getlod() {
StringBuffer temp = new StringBuffer();
List<Integer> s0 = new ArrayList<>();
for (; ; ) {
int math = (int) (Math.random() * (this.high - this.low + 1)) + this.low;
if (chongfu) {
s0.add(math);
}
if (!chongfu && (this.high - this.low + 1) >= this.num) {
if (!s0.contains(math)) {
s0.add(math);//通过contains判断新的随机数是否在容器中
}
}
if(!chongfu && (this.high - this.low + 1) < this.num){
break;
}
if (s0.size() == this.num) {
break;
}
}
Collections.sort(s0);
for (Integer sc : s0) {
temp.append(sc + " ");
}
if(!chongfu && (this.high - this.low + 1) < this.num){
temp.append("超出范围");
}
return temp;
}
}