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");
}
}

執行結果圖:

[第五週]連假停課

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

[第四週]製作按鈕

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");
}
}


執行圖如下:


[第三週]九九乘法表(待補充)

JavaScript


<html>
<head>
<title> The First Example: Hello, World </title>
</head>
<body>
<h2> This line is HTML </h2>

<script language="JavaScript">
for(i=1;i<=10;i+1)
{
document.write("<BR>");
}
</script>
<noscript>
Sorry, but your browser doesn't run JavaScript.
</noscript>

<h2> This line is HTML </h2>

讓電腦可以使用javac編譯

安裝完Java SE之後
[我的電腦]右鍵

→[內容]

→[進階系統設定]

→[環境變數]

→找到變數Path點[編輯]

→於變數值後面加上;並貼上javac.exe的安裝位置(通常是
    根目錄:\Program Files\Java\jdk1.8.0_40\bin)後按[確定]

→剩下步驟皆點[確定],打開[命令提示字元]輸入javac如能執行即完成