题目:
设计如图所示的网格排序程序:界面上有3*3或4*4个按钮,其中一个上面没有数字,其余的有1-8或者1-15等数字,程序开始时,按钮数字随机排列,点击与空白按钮相邻的按钮,该按钮上的数字就移到空白按钮上。如果按钮上的数字按序排列,则显示成功信息。

代码如下:
importjava.awt.Button;
import java.awt.Container;
importjava.awt.Frame;
import java.awt.GridLayout;
importjava.awt.LayoutManager;
importjava.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
importjava.awt.event.ContainerAdapter;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
publicclass Test2 extends JFrame implements ActionListener{
privatestaticfinallongserialVersionUID=1L;
private JButton[] button =new JButton[16];//创建16个按钮
private ArrayList
public Test2(){
super("Grid Sort");
this.setLayout(new GridLayout(4,4,3,3));
Container c = this.getContentPane();
for(int i=0;i<16;i++){
button[i]=new JButton();
button[i].addActionListener(this);
c.add(button[i]);
}
for(int i=0;i<16;i++){
caplist.add(String.valueOf(i));
}
Collections.shuffle(caplist);
for(int i=0;i<16;i++){
String str=caplist.get(i);
if(str.equals("0")){
button[i].setText("");
System.out.println("button index is " + i);
}
else{
button[i].setText(str);
}
}
}
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
Test2 g=new Test2();
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setSize(400,400);
g.setVisible(true);
}
@Override
publicvoid actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
// TODO Auto-generated method stub
int i;
int j;
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
if (e.getSource() == button[i]
&& button[j].getText().equals("")) {
if (i - 1 == j || i + 1 == j || i - 4 == j || i + 4 == j) {
button[j].setText(button[i].getText());
button[i].setText("");
}
}
}
}//判断是否拼完
int s = 0;
for (i = 0; i < 16; i++) {
if (button[i].getText().equals(String.valueOf(i + 1))) {
s++;
}
}
if (s == 15)
JOptionPane.showMessageDialog(null, "你成功啦!");
}
}
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本教程系本人依照真实经历原创,未经许可,谢绝转载。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
