littlefermat

          用Louberel方法生成奇數(shù)階幻方

           

          /**
           * 
          @author wangliang
           
          */

          import java.awt.Container;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;
          import javax.swing.*;
          import java.awt.*;


          public class MagicMatrix extends JFrame implements ActionListener{
              
          private JPanel center;
              
          private JPanel right;
              
          private JLabel label;
              
          private JSpinner level;
              
          private JButton Louberel;
              
          public MagicMatrix(){
                  center
          =createpanel(3);
                  add(center,BorderLayout.CENTER);
                  right
          =new JPanel();
                  label
          =new JLabel("選擇矩陣階數(shù)");
                  level
          =new JSpinner(new SpinnerNumberModel(3,3,100,2));
                  Louberel
          =new JButton("Louberel方法生成");
                  Louberel.addActionListener(
          this);
                  right.add(label,BorderLayout.WEST);
                  right.add(level,BorderLayout.CENTER);
                  right.add(Louberel,BorderLayout.EAST);
                  add(right,BorderLayout.NORTH);
                  setTitle(
          "magic matrix)");
                  setSize(
          340,296);
                  setVisible(
          true);
              }

              
              
          public void actionPerformed(ActionEvent e){
                  
          if(e.getSource()==Louberel){
          //            remove(center);
                      int levelnumber=((Integer)level.getValue()).intValue();
                      center
          =createpanel(levelnumber);
                      add(center,BorderLayout.CENTER);
                      validate();
                  }

              }

              
              
          /*生成魔陣數(shù)*/
              
          private int[][] createnumber(int n){
                  
          int magicmatrix[][]=new int[n][n];
                  
          int i=0;
                  
          int j=n/2;
                  
          for(int m=1;m<=n*n;m++){
                      magicmatrix[i][j]
          =m;
                      
          int p=(i-1+n)%n;
                      
          int q=(j+1+n)%n;
                      
          if(magicmatrix[p][q]==0){
                          i
          =p;
                          j
          =q;
                      }

                      
          else i=(i+1)%n;
                  }

                  
          for(int p=0;p<n;p++){
                      
          for(int q=0;q<n;q++){
                          System.out.print(magicmatrix[p][q]
          +" ");
                      }

                      System.out.println();
                  }


                  
          return magicmatrix;
                  
              }

              
              
          /*生成相應(yīng)的面板*/
              
          private JPanel createpanel(int n){
                  
          int matrix[][]=createnumber(n);
                  JPanel tempJPanel
          =new JPanel();
                  tempJPanel.setLayout(
          new GridLayout(n,n));
                  JLabel jlabel[][]
          =new JLabel[n][n];
                  
          for(int i=0;i<n;i++){
                      
          for(int j=0;j<n;j++){
                          jlabel[i][j]
          =new JLabel(""+matrix[i][j],JLabel.CENTER);
                          tempJPanel.add(jlabel[i][j]);
                      }

                  }

                  
          return tempJPanel;
              }

              
              
          public static void main(String args[]){
                  MagicMatrix application
          =new MagicMatrix();
                  application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              }


          }

           

          posted on 2007-12-08 14:02 littlefermat 閱讀(5282) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 石台县| 马山县| 深水埗区| 五大连池市| 布拖县| 广东省| 乐昌市| 镇巴县| 泽库县| 达日县| 顺平县| 宜州市| 乌鲁木齐县| 万荣县| 苏州市| 宣化县| 大厂| 凭祥市| 蒙城县| 乐东| 上蔡县| 康保县| 龙州县| 阜城县| 平昌县| 凌海市| 江口县| 苏尼特右旗| 黔东| 克山县| 旺苍县| 辽源市| 尤溪县| 伊吾县| 祁门县| 济阳县| 江永县| 汝城县| 宁远县| 石城县| 吴旗县|