数组例子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,如需转载请自行联系原作者


相关文章
|
1月前
|
容器
微搭低代码实现下拉框动态填充值
微搭低代码实现下拉框动态填充值
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序4
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序4
32 0
|
4月前
|
JavaScript
【sgDrag】自定义组件:基于Vue开发支持批量声明拖拽元素、被碰撞元素,拖拽全过程监听元素碰撞检测并返回拖拽原始元素、克隆元素及其getBoundingClientRect对象和碰撞接触元素数组。
【sgDrag】自定义组件:基于Vue开发支持批量声明拖拽元素、被碰撞元素,拖拽全过程监听元素碰撞检测并返回拖拽原始元素、克隆元素及其getBoundingClientRect对象和碰撞接触元素数组。
|
7月前
多按键多界面二维数组表驱动设计
多按键多界面二维数组表驱动设计
41 0
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序2
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序2
33 0
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序3
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序3
33 0
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序1
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序1
31 0
|
算法
用函数数组指针来实现计算器的功能(简易模式)(不过稍微改改也能算比较复杂的)
整个代码块并不算多难理解,有兴趣的可以看看我写的扫雷(比这稍微复杂点,但与比赛相比差远了)。它的思路很简单,就是构造一个函数指针数组,然后把4个函数放到里面去,再在想用的时候把它调用出来。
71 0
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序
99 0
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序