目次> 第13章> 13.2 | TOPUPPREVNEXT |
11.4 節の配列の初期値の設定例のプログラム Array5.java にソート処理を追加してみましょう。
18行目で、縦2行分の表示領域を確保します。 19〜21行目でソート前のデータを表示し、 33〜35行目でソート後のデータを表示しています。 23〜31行目は 13.1 節の説明の通りです。 組み合わせると以下のようになります。
01:/* 配列の宣言と初期化 およびソート */ 02: 03:import java.awt.* ; 04:import java.awt.event.* ; 05:import javax.swing.* ; 06: 07:public class Sort2 { 08: 09: public static void main(String args[]) { 10: 11: int [] data = { 150, 120, 130, 110, 160, 100, 130 }; 12: 13: JFrame frame = new JFrame("配列のソート"); 14: frame.addWindowListener(new WindowAdapter() { 15: public void windowClosing(WindowEvent e) { System.exit(0); } 16: }); 17: Container pane = frame.getContentPane(); 18: pane.setLayout(new GridLayout(2, 0, 10, 10)); 19: for(int i=0; i<data.length; i++) { 20: pane.add( new JLabel( String.valueOf(data[i]) ) ); 21: } 22: 23: for(int sfrom=0; sfrom<data.length-1; sfrom++) { 24: int max = sfrom; 25: for(int i=sfrom+1; i<data.length; i++) { 26: if(data[i] > data[max]) max = i; 27: } 28: int temp = data[sfrom]; 29: data[sfrom] = data[max]; 30: data[max] = temp; 31: } 32: 33: for(int i=0; i<data.length; i++) { 34: pane.add( new JLabel( String.valueOf(data[i]) ) ); 35: } 36: 37: frame.pack(); 38: frame.setVisible(true); 39: } 40:}
プログラムの実行結果は、次のようになります。
縦に2列で、整列前、整列後を表示してみましょう。 たとえば次のように表示するには、プログラムのどこを変更すればよいのでしょう?
18行目で外側のフレームを2列にします。 縦1列のパネルを2つ用意し(19〜20行目)、 外側のフレームに貼り付けます(21〜22行目)。 JLabel を貼り付けるタイミングは同じです。 プログラム Sort2.java に対する変更箇所を赤の行番号で示します。
01:/* 配列の宣言と初期化 およびソート(縦に表示)*/ 02: 03:import java.awt.* ; 04:import java.awt.event.* ; 05:import javax.swing.* ; 06: 07:public class Sort22 { 08: 09: public static void main(String args[]) { 10: 11: int [] data = { 150, 120, 130, 110, 160, 100, 130 }; 12: 13: JFrame frame = new JFrame("配列のソート"); 14: frame.addWindowListener(new WindowAdapter() { 15: public void windowClosing(WindowEvent e) { System.exit(0); } 16: }); 17: Container pane = frame.getContentPane(); 18: pane.setLayout(new GridLayout(0, 2, 10, 10)); 19: JPanel leftPanel = new JPanel(new GridLayout(0, 1, 10, 10)); 20: JPanel rightPanel = new JPanel(new GridLayout(0, 1, 10, 10)); 21: pane.add(leftPanel); 22: pane.add(rightPanel); 23: for(int i=0; i<data.length; i++) { 24: leftPanel.add( new JLabel( String.valueOf(data[i]) ) ); 25: } 26: 27: for(int sfrom=0; sfrom<data.length-1; sfrom++) { 28: int max = sfrom; 29: for(int i=sfrom+1; i<data.length; i++) { 30: if(data[i] > data[max]) max = i; 31: } 32: int temp = data[sfrom]; 33: data[sfrom] = data[max]; 34: data[max] = temp; 35: } 36: 37: for(int i=0; i<data.length; i++) { 38: rightPanel.add( new JLabel( String.valueOf(data[i]) ) ); 39: } 40: 41: frame.pack(); 42: frame.setVisible(true); 43: } 44:}
更新日:2004-12-18 | TOPUPPREVNEXT |