数组例子2:二维数组中的行列互换和按钮控件数组实现计算器界面(暂不支持计算功能,仅界面及简单输入)

简介:

1.二维数组中行列互换

数组的行列互换,大概实现以后功能

1
2
3
4
5
6
7
8
行列互换前:
123
456
789
行列互换后:
147
258
369

思路是利用

1
2
3
4
5
int  arr2[][] =  new  int [arr.length][arr.length];
         for  ( int  i =  0 ; i < arr.length; i++) { // 调整数组行列数据
             for  ( int  j =  0 ; j < arr[i].length; j++) {
                 arr2[i][j] = arr[j][i];
             }

去实现数组互换(注意一点是print()功能是把数组元素输出,再通过println()换行)

详细代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public  class  ArrayRowColumnSwap {  // 创建类
     public  static  void  main(String[] args) {
         // 创建二维数组
         int  arr[][] =  new  int [][] { {  1 2 3  }, {  4 5 6  }, {  7 8 9  } };
         System.out.println( "行列互调前:" );
         // 输出二维数组
         printArray(arr);
         int  arr2[][] =  new  int [arr.length][arr.length];
         for  ( int  i =  0 ; i < arr.length; i++) { // 调整数组行列数据
             for  ( int  j =  0 ; j < arr[i].length; j++) {
                 arr2[i][j] = arr[j][i];
             }
         }
         System.out.println( "行列互调后:" );
         // 输出行列互调后的二维数组
         printArray(arr2);
     }
     /**
      * 遍历数组并输出数组的全部元素
      */
     private  static  void  printArray( int [][] arr) {
         for  ( int  i =  0 ; i < arr.length; i++) { // 遍历数组
             for  ( int  j =  0 ; j < arr.length; j++) {
                 System.out.print(arr[i][j] +  " " ); // 不换行输出数组元素
             }
             System.out.println();    //换行
         }
     }
}

————————————————————————————————————————————

2.按钮控件数组实现计算器界面

195537897.jpg

主要是通过 按钮数组 来管理界面中的所有按钮控件,减少代码量

把所有按钮控件看成一个数组主要通过以上这句来实现,简化了很多:

1
2
3
4
5
String[][] names = { {  "1" "2" "3" "+"  }, {  "4" "5" "6" "-"  }, {  "7" "8" "9" "×"  }, {  "." "0" "=" "÷"  } };
    JButton[][] buttons =  new  JButton[ 4 ][ 4 ];
    for  ( int  row =  0 ; row < names.length; row++) {
        for  ( int  col =  0 ; col < names.length; col++) {
            buttons[row][col] =  new  JButton(names[row][col]);  // 创建按钮对象

完整代码注释如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package  com.lixiyu;
import  java.awt.BorderLayout;
import  java.awt.Dimension;
import  java.awt.GridLayout;
import  java.awt.TextField;
import  java.awt.event.ActionEvent;
import  java.awt.event.ActionListener;
import  javax.swing.JButton;
import  javax.swing.JFrame;
import  javax.swing.JPanel;
import  javax.swing.JTextField;
import  javax.swing.SwingConstants;
import  javax.swing.UIManager;
public  class  CalculatorButtonArray  extends  JFrame {
     private  static  final  long  serialVersionUID = 6626440733001287873L; //保持兼容性
     private  JTextField textField;
                                   
public  static  void  main(String args[]){
     try {
         UIManager.setLookAndFeel( "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel" ); //外观
     } catch (Throwable e){
         e.printStackTrace();
     }
     CalculatorButtonArray frame =  new  CalculatorButtonArray();
     frame.setVisible( true ); //设置窗体可见,默认时为不可见
}
public  CalculatorButtonArray() {
     super ();  // 继承父类的构造方法
     BorderLayout borderlayout=(BorderLayout) getContentPane().getLayout(); //布局管理器那块,暂还不太懂
     borderlayout.setHgap( 20 ); //水平间隔
     borderlayout.setVgap( 20 ); //竖向间隔
     setTitle( "按钮数组实现计算机简易功能界面(test1)" );
     setBounds( 100 , 100 , 290 , 282 ); //设置窗体的显示位置及大小
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //默认窗体关闭方式
     textField= new  JTextField();
     textField.setHorizontalAlignment(SwingConstants.TRAILING);
     textField.setPreferredSize( new  Dimension( 12 50 ));
     getContentPane().add(textField, BorderLayout.NORTH);
     textField.setColumns( 10 );
     final  GridLayout gridLayout =  new  GridLayout( 4 0 );  // 创建网格布局管理器对象
     gridLayout.setHgap( 5 );  // 设置组件的水平间距
     gridLayout.setVgap( 5 );  // 设置组件的垂直间距
     JPanel panel =  new  JPanel();  // 获得容器对象
     panel.setLayout(gridLayout);  // 设置容器采用网格布局管理器
     getContentPane().add(panel, BorderLayout.CENTER);
     String[][] names = { {  "1" "2" "3" "+"  }, {  "4" "5" "6" "-"  }, {  "7" "8" "9" "×"  }, {  "." "0" "=" "÷"  } };
     JButton[][] buttons =  new  JButton[ 4 ][ 4 ];
     for  ( int  row =  0 ; row < names.length; row++) {
         for  ( int  col =  0 ; col < names.length; col++) {
             buttons[row][col] =  new  JButton(names[row][col]);  // 创建按钮对象
             buttons[row][col].addActionListener( new  ActionListener() {
                 @Override
                 public  void  actionPerformed(ActionEvent e) {
                     JButton button = (JButton) e.getSource();
                     String text = textField.getText();
                     textField.setText(text + button.getText());
                 }
             });
             panel.add(buttons[row][col]);  // 将按钮添加到面板中
         }
     }
}
}

目前没有加入运算功能,所以只是一个简单的空壳,主要为了体现数组的实际应用。

所以还需要继续学习去掌握更多的知识才能让它真正地跑起来。



本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1304048,如需转载请自行联系原作者


相关文章
|
存储 前端开发 JavaScript
AdonisJS 框架教程:构建全栈 Web 应用程序
AdonisJS 框架教程:构建全栈 Web 应用程序
328 0
|
大数据 安全 缓存
|
小程序 JavaScript API
微信小程序上传图片
微信小程序上传图片
478 0
|
前端开发
纯HTML和CSS实现精美点赞效果
纯HTML和CSS实现点赞效果,动态效果由CSS实现,主要有两个动画实现 代码下面自取🖖
|
Windows
Windows系统 cleanmgr命令详解,Windows命令行清理磁盘
第一步、打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」
2364 0
Windows系统 cleanmgr命令详解,Windows命令行清理磁盘
|
JavaScript 数据可视化 定位技术
Echarts实战案例代码(11):利用geojson数据地图map组件生成js本地版直接访问的解决方案
Echarts实战案例代码(11):利用geojson数据地图map组件生成js本地版直接访问的解决方案
466 0
|
前端开发 小程序 JavaScript
小程序canvas实现(分享朋友圈生成图片)
小程序canvas实现(分享朋友圈生成图片)
633 0
小程序canvas实现(分享朋友圈生成图片)
|
9月前
|
API
uniapp中uview组件库丰富LoadingPage 加载页
uniapp中uview组件库丰富LoadingPage 加载页
247 0
|
前端开发 定位技术 API
OpenLayers入门(二)
OpenLayers入门(二)
493 0
OpenLayers入门(二)

热门文章

最新文章