public class PlayMouse extends JFrame implements Runnable {
public JLabel bgLabel;
public JLabel[] mouses;
public JLabel jtf;
public int score;
public Random random = new Random();
public PlayMouse() {
Cursor myCursor = null;
try {
myCursor = Toolkit.getDefaultToolkit().createCustomCursor(
ImageIO.read(new File("hand.jpg")),new Point(0,0),"");
} catch (IOException e) {
System.out.println(e);
}
setCursor(myCursor);
jtf = new JLabel();
jtf.setBounds(360,10,235,50);
jtf.setFont(new Font("",Font.BOLD,25));
jtf.setForeground(Color.blue);
jtf.setText("您的得分是: 分");
add(jtf);
bgLabel = new JLabel();
bgLabel.setIcon(new ImageIcon("bgimage.jpg"));
bgLabel.setBounds(0,0,1000,800);
setResizable(false);
setTitle("打地鼠");
setBounds(300,100,1000,800);
Connection con=null;
Statement sql;
ResultSet rs;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(Exception e){
System.out.println(e);
}
try{
con = DriverManager.getConnection(
"jdbc:sqlserver://127.0.0.1:1435;DatabaseName=caoyao","sa","1227mq");
}catch(SQLException e){
System.out.println(e);
}
mouses = new JLabel[17];
for (int i = 0; i < 17; i++) {
mouses[i] = new JLabel();
mouses[i].setSize(110,110);
try{
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs =sql.executeQuery("SELECT * FROM caoyao");
rs.last();
int max = rs.getRow();
int num=(int)(Math.random()*max+1);
rs.absolute(num);
String path=rs.getString(3);
String name=rs.getString(2);
mouses[i].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(name.equals("清热药"))
score++;
else
score--;
jtf.setText("您的得分是: "+score+"分");
repaint();
}
});
mouses[i].setIcon(new ImageIcon(path));
mouses[i].setVisible(false);
add(mouses[i]);
con.close();
} catch(SQLException e) {
System.out.println(e);
}
}
mouses[0].setLocation(120,520);
mouses[1].setLocation(480,520);
mouses[2].setLocation(850,520);
mouses[3].setLocation(50,420);
mouses[4].setLocation(350,420);
mouses[5].setLocation(650,420);
mouses[6].setLocation(900,420);
mouses[7].setLocation(210,333);
mouses[8].setLocation(500,333);
mouses[9].setLocation(750,333);
mouses[10].setLocation(150,250);
mouses[11].setLocation(370,250);
mouses[12].setLocation(625,250);
mouses[13].setLocation(850,250);
mouses[14].setLocation(260,150);
mouses[15].setLocation(480,150);
mouses[16].setLocation(680,150);
add(bgLabel);
setVisible(true);
new Thread(this).start();
}
public static void main(String[] args) {
PlayMouse game = new PlayMouse();
}
public void run() {
while(true){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.println(e); }
int pos = random.nextInt(17);
//mouses[pos].setLocation(random.nextInt(1000),random.nextInt(800));
if(!mouses[pos].isVisible()){
mouses[pos].setVisible(true);
try {
Thread.sleep(1200);
} catch (InterruptedException e) {
System.out.println(e);
}
if(mouses[pos].isVisible()){
mouses[pos].setVisible(false);
}
}
}
}
}
怎么从数据库中随机获取一个图片显示在随机的坑里啊??当点击的图片不是清热药时,总分减一,是清热药时,总分加一。为什么只显示第一个地鼠洞里的图片啊,请教各位!
可能是因为在循环中每次都关闭了数据库连接,导致后面的图片无法从数据库中获取。解决方法:将关闭数据库连接的代码移到循环外面。
public class PlayMouse extends JFrame implements Runnable {
public JLabel bgLabel;
public JLabel[] mouses;
public JLabel jtf;
public int score;
public Random random = new Random();
public Connection con;
public PlayMouse() {
Cursor myCursor = null;
try {
myCursor = Toolkit.getDefaultToolkit().createCustomCursor(
ImageIO.read(new File("hand.jpg")),new Point(0,0),"");
} catch (IOException e) {
System.out.println(e);
}
setCursor(myCursor);
jtf = new JLabel();
jtf.setBounds(360,10,235,50);
jtf.setFont(new Font("",Font.BOLD,25));
jtf.setForeground(Color.blue);
jtf.setText("您的得分是: 分");
add(jtf);
bgLabel = new JLabel();
bgLabel.setIcon(new ImageIcon("bgimage.jpg"));
bgLabel.setBounds(0,0,1000,800);
setResizable(false);
setTitle("打地鼠");
setBounds(300,100,1000,800);
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(
"jdbc:sqlserver://127.0.0.1:1435;DatabaseName=caoyao","sa","1227mq");
}catch(Exception e){
System.out.println(e);
}
mouses = new JLabel[17];
for (int i = 0; i < 17; i++) {
mouses[i] = new JLabel();
mouses[i].setSize(110,110);
try{
Statement sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = sql.executeQuery("SELECT * FROM caoyao");
rs.last();
int max = rs.getRow();
int num=(int)(Math.random()*max+1);
rs.absolute(num);
String path=rs.getString(3);
String name=rs.getString(2);
mouses[i].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(name.equals("清热药"))
score++;
else
score--;
jtf.setText("您的得分是: "+score+"分");
repaint();
}
});
mouses[i].setIcon(new ImageIcon(path));
mouses[i].setVisible(false);
add(mouses[i]);
} catch(SQLException e) {
System.out.println(e);
}
}
mouses[0].setLocation(120,520);
mouses[1].setLocation(480,520);
mouses[2].setLocation(850,520);
mouses[3].setLocation(50,420);
mouses[4].setLocation(350,420);
mouses[5].setLocation(650,420);
mouses[6].setLocation(900,420);
mouses[7].setLocation(210,333);
mouses[8].setLocation(500,333);
mouses[9].setLocation(750,333);
mouses[10].setLocation(150,250);
mouses[11].setLocation(370,250);
mouses[12].setLocation(625,250);
mouses[13].setLocation(850,250);
mouses[14].setLocation(260,150);
mouses[15].setLocation(480,150);
mouses[16].setLocation(680,150);
add(bgLabel);
setVisible(true);
new Thread(this).start();
}
public static void main(String[] args) {
PlayMouse game = new PlayMouse();
}
public void run() {
while(true){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.println(e); }
int pos = random.nextInt(17);
if(!mouses[pos].isVisible()){
try{
Statement sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = sql.executeQuery("SELECT * FROM caoyao");
rs.last();
int max = rs.getRow();
int num=(int)(Math.random()*max+1);
rs.absolute(num);
String path=rs.getString(3);
String name=rs.getString(2);
mouses[pos].setIcon(new ImageIcon(path));
mouses[pos].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(name.equals("清热药"))
score++;
else
score--;
jtf.setText("您的得分是: "+score+"分");
repaint();
}
});
mouses[pos].setVisible(true);
Thread.sleep(1200);
mouses[pos].setVisible(false);
} catch(SQLException | InterruptedException e) {
System.out.println(e);
}
}
}
}
}