2015年6月12日 星期五

[第九週]老師演講放假一週

[第十週]產生4*4亂數

import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test extends JFrame{
public static void main(String[]args){



Random random = new Random();

int number = 0;;
int array[] = new int[16];
boolean b;

for(int i=0;i<16;i++)
{
b = true;
while(b) {
b = false;
number = random.nextInt(16)+1;
for(int j=0;j<array.length;j++) {
if(array[j]==number) {
b = true;
}
}
}
array[i] = number;
System.out.printf("array[%d]=%d\n",i,number);
}




JFrame window=new JFrame("myButton");
window.setSize(450, 150);
JButton button[]=new JButton[16];
JPanel jplPanel = new JPanel();
jplPanel.setLayout(new GridLayout(4,4,8,8));

for (int i = 0; i < 16; i++){
//button[i]=new JButton(""+array[16]);
button[i] = new JButton();
button[i].setSize(40,40);
button[i].setText(Integer.toString(array[i]));
button[i].addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int j = 0; j < 16; j++) {
if (e.getSource() == button[j]) {
System.out.println(j+1);
}
}
}
}
);
jplPanel.add(button[i]);
}

window.getContentPane().add(jplPanel, BorderLayout.CENTER);
window.setSize(400,400);
window.setVisible(true);
}

}


[第十二週]製作推盤──使兩按鈕互換

 import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class Calculator extends JFrame implements 
ActionListener{
int space;
JButton button[]=new JButton[10];

public static void main(String[]args){

new Calculator();
}


public Calculator()
{
String s;
int myrand;
int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] aresult;
int temp;
Random ran = new Random();
/*
for (int i = 0; i < 9; i++)
{
 System.out.println(a[i]);
}
*/

for (int i = 0; i < 9; i++)
{
 myrand=ran.nextInt(9-i);
temp=a[8-i];
a[8-i]=a[myrand];
a[myrand]=temp;
}

for (int i = 0; i < 9; i++)
{
 System.out.println(a[i]);
}

JFrame window=new JFrame("Calculator");

window.setDefaultLookAndFeelDecorated(true);


window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setLayout(new GridLayout(3,3));

JPanel jplPanel = new JPanel();
jplPanel.setLayout(new GridLayout(3,3));


//s=Integer.toString(1);
s=String.valueOf(1);
//System.out.println(s);
//s="1";

for (int i = 0; i < 9; i++)
{
button[i] = new JButton();


button[i].setActionCommand(s);
button[i].addActionListener(this);
button[i].setSize(50,50);
button[i].setText(Integer.toString(a[i]));

jplPanel.add(button[i]);
if ( Integer.valueOf(button[i].getText())== 0)   
  {
                space=i;
                System.out.println(i)     ;
  }

}
window.getContentPane().add(jplPanel, BorderLayout.CENTER);
window.setSize(500,500);
window.setVisible(true);


}




public void actionPerformed(ActionEvent e) {
 for(int i=0; i <=8; i++)
{

if(e.getSource() == button[i]){
 //if( Integer.valueOf(button[i].getText())== 0)
String tempsting;
if (i==space-1)
{
tempsting=button[i].getText();
button[i].setText(button[i+1].getText());
button[i+1].setText(tempsting);
System.out.println(i+button[i].getText());
}
}


}

}

}



[第十一週]製作推盤──產生3*3亂數不重複按鈕

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class Calculator extends JFrame implements 
ActionListener{

JButton button[]=new JButton[10];

public static void main(String[]args){

new Calculator();
}


public Calculator()
{
String s;
int myrand;
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] aresult;
int temp;
Random ran = new Random();
for (int i = 0; i < 9; i++)
{
 System.out.println(a[i]);
}
for (int i = 0; i < 9; i++)
{
 myrand=ran.nextInt(9-i);
temp=a[8-i];
a[8-i]=a[myrand];
a[myrand]=temp;
}

for (int i = 0; i < 9; i++)
{
 System.out.println(a[i]);
}

JFrame window=new JFrame("Calculator");

window.setDefaultLookAndFeelDecorated(true);


window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setLayout(new GridLayout(3,3));

JPanel jplPanel = new JPanel();
jplPanel.setLayout(new GridLayout(3,3));


//s=Integer.toString(1);
s=String.valueOf(1);
//System.out.println(s);
//s="1";

for (int i = 0; i < 9; i++)
{
button[i] = new JButton();


button[i].setActionCommand(s);
button[i].addActionListener(this);
button[i].setSize(50,50);
button[i].setText(Integer.toString(a[i]));

jplPanel.add(button[i]);
}
window.getContentPane().add(jplPanel, BorderLayout.CENTER);
window.setSize(500,500);
window.setVisible(true);


}




public void actionPerformed(ActionEvent e) {
     

for(int i=1; i <= 9; i++)
{
          if(e.getSource() == button[i]){
              System.out.println(i);
          }
    }

}


}




2015年4月23日 星期四

[第七週]製作智慧推盤前篇──如何製作Java GridLayout&按扭回應(待補充說明)

什麼是「智慧推盤(n-puzzle)」?



▲小時候常玩的華容道就是智慧推盤的延伸

=======================================================================
在學會做智慧推盤前,先學會如何用Java做GridLayout的按鈕排列

Java GridLayout:

GridLayout class
=======================================================================


import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GridLayoutTest {

  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("GridLayout Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new GridLayout(3, 2));
    frame.add(new JButton("Button 1"));
    frame.add(new JButton("Button 2"));
    frame.add(new JButton("Button 3"));
    frame.add(new JButton("Button 4"));
    frame.add(new JButton("Button 5"));
    frame.add(new JButton("Button 6"));
    frame.add(new JButton("Button 7"));
    frame.add(new JButton("Button 8"));
    frame.pack();
    frame.setVisible(true);
  }
}

執行結果圖:
















=======================================================================

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener{
public static void main(String[]args){
new Calculator();
}

public Calculator()
{
JFrame window=new JFrame("Calculator");

window.setDefaultLookAndFeelDecorated(true);


window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setLayout(new GridLayout(3,3));

JPanel jplPanel = new JPanel();
jplPanel.setLayout(new GridLayout(3,3));

JButton button[]=new JButton[10];
for (int i = 1; i <= 9; i++)
{
button[i] = new JButton();
button[i].setActionCommand("d1");
button[i].addActionListener(this);
button[i].setSize(50,50);
button[i].setText(Integer.toString(i));

jplPanel.add(button[i]);
}
window.getContentPane().add(jplPanel, BorderLayout.CENTER);
window.setSize(500,500);
window.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
    String cmd = e.getActionCommand();
    if (cmd == "d1") {
        System.out.println("Yes....");
    }
  }
}


執行結果圖:





















[第六週]增加按鈕&讓按鈕皆能個別執行之土法煉鋼法

以上禮拜的程式碼(名為Test.java)為例:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Test
{


public static void main(String[] args)
{
JFrame jtfMainFrame = new JFrame("Which Button Demo");
jtfMainFrame.setSize(450, 150);
JButton  jbnButton1 = new JButton("Button 1");
JPanel jplPanel = new JPanel();
jplPanel.add(jbnButton1);
jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
jtfMainFrame.setVisible(true);
System.out.print("yu-min liaw");
}
}

執行結果如下:


========================================================================
現在,我們要讓程式增加按鈕(名為Test1.java):
從上禮拜知道:

JButton  jbnButton1 = new JButton("Button 1");
是新增按鈕的指令

jplPanel.add(jbnButton1);
則是增加按鈕物件的程式碼
所以我們讓程式碼新增一個Buttion2如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Test1
{
public static void main(String[] args)
{
JFrame jtfMainFrame = new JFrame("Which Button Demo");
jtfMainFrame.setSize(450, 150);
JButton  jbnButton1 = new JButton("Button 1");
JButton  jbnButton2 = new JButton("Button 2");

JPanel jplPanel = new JPanel();
jplPanel.add(jbnButton1);
jplPanel.add(jbnButton2);

jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
jtfMainFrame.setVisible(true);
System.out.print("yu-min liaw");
}
}

執行結果就會如下:


以此類推,我們讓按鈕增加至1~9,物件也增加1~9
JButton  jbnButton1 = new JButton("Button 數字1~9");
jplPanel.add(jbnButton數字1~9);


即如下程式碼:

import java.awt.*;

import java.awt.event.*;
import javax.swing.*;
class Test1
{


public static void main(String[] args)
{
JFrame jtfMainFrame = new JFrame("Which Button Demo");
jtfMainFrame.setSize(450, 150);
JButton  jbnButton1 = new JButton("Button 1");
JButton  jbnButton2 = new JButton("Button 2");
JButton  jbnButton3 = new JButton("Button 3");
JButton  jbnButton4 = new JButton("Button 4");
JButton  jbnButton5 = new JButton("Button 5");
JButton  jbnButton6 = new JButton("Button 6");
JButton  jbnButton7 = new JButton("Button 7");
JButton  jbnButton8 = new JButton("Button 8");
JButton  jbnButton9 = new JButton("Button 9");
JPanel jplPanel = new JPanel();
jplPanel.add(jbnButton1);
jplPanel.add(jbnButton2);
jplPanel.add(jbnButton3);
jplPanel.add(jbnButton4);
jplPanel.add(jbnButton5);
jplPanel.add(jbnButton6);
jplPanel.add(jbnButton7);
jplPanel.add(jbnButton8);
jplPanel.add(jbnButton9);
jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
jtfMainFrame.setVisible(true);
System.out.print("yu-min liaw");
}
}

執行結果圖:

========================================================================

接下來,我們要讓個別按鈕點下去之後 會有個別回應(名為Test2.java):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Test2
{
public static void main(String[] args)
{
JFrame jtfMainFrame = new JFrame("Which Button Demo");
jtfMainFrame.setSize(450, 150);
JButton  jbnButton1 = new JButton("Button 1");
JButton  jbnButton2 = new JButton("Button 2");
JButton  jbnButton3 = new JButton("Button 3");
JButton  jbnButton4 = new JButton("Button 4");
JButton  jbnButton5 = new JButton("Button 5");
JButton  jbnButton6 = new JButton("Button 6");
JButton  jbnButton7 = new JButton("Button 7");
JButton  jbnButton8 = new JButton("Button 8");
JButton  jbnButton9 = new JButton("Button 9");
jbnButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 1!"); 
}
  });
JPanel jplPanel = new JPanel();
jplPanel.add(jbnButton1);
jplPanel.add(jbnButton2);
jplPanel.add(jbnButton3);
jplPanel.add(jbnButton4);
jplPanel.add(jbnButton5);
jplPanel.add(jbnButton6);
jplPanel.add(jbnButton7);
jplPanel.add(jbnButton8);
jplPanel.add(jbnButton9);
jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
jtfMainFrame.setVisible(true);
System.out.print("yu-min liaw");

執行後,會如下圖:




由上面可知新增程式碼ActionListener可命令哪個按扭做回應
並用system.out使按鈕回應反映出來



以此類推,我們將上列新增的程式碼做延伸

jbnButton數字1~9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 數字1~9!"); 
}
  });

即如下程式碼:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Test2
{


public static void main(String[] args)
{
JFrame jtfMainFrame = new JFrame("Which Button Demo");
jtfMainFrame.setSize(450, 150);
JButton  jbnButton1 = new JButton("Button 1");
JButton  jbnButton2 = new JButton("Button 2");
JButton  jbnButton3 = new JButton("Button 3");
JButton  jbnButton4 = new JButton("Button 4");
JButton  jbnButton5 = new JButton("Button 5");
JButton  jbnButton6 = new JButton("Button 6");
JButton  jbnButton7 = new JButton("Button 7");
JButton  jbnButton8 = new JButton("Button 8");
JButton  jbnButton9 = new JButton("Button 9");
jbnButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 1!"); 
}
  });
jbnButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 2!"); 
}
  });
jbnButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 3!"); 
}
  });
jbnButton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 4!"); 
}
  });
jbnButton5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 5!"); 
}
  });
jbnButton6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 6!"); 
}
  });
jbnButton7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 7!"); 
}
  });
jbnButton8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 8!"); 
}
  });
jbnButton9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
 {
System.out.println("Button 9!"); 
}
  });
JPanel jplPanel = new JPanel();
jplPanel.add(jbnButton1);
jplPanel.add(jbnButton2);
jplPanel.add(jbnButton3);
jplPanel.add(jbnButton4);
jplPanel.add(jbnButton5);
jplPanel.add(jbnButton6);
jplPanel.add(jbnButton7);
jplPanel.add(jbnButton8);
jplPanel.add(jbnButton9);
jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
jtfMainFrame.setVisible(true);
System.out.print("yu-min liaw");
}
}

執行結果圖:

[第五週]連假停課

清明連假 慎終追遠 飲水思源