十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
参考代码,
创新互联建站是一家专注于成都网站制作、做网站、外贸营销网站建设与策划设计,宿松网站建设哪家好?创新互联建站做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:宿松等地区。宿松做网站价格咨询:18982081108
注意图片的路径,拿不准的话,就使用绝对路径吧
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//我的图片路径是 src\\images\\1.gif .有四张 从1.jpg~~4.jpg
public class ImageDemo extends JFrame {
JLabel jl;
JPanel jp;
public ImageDemo() {
jp = new JPanel();
int i;
for (i = 0; i 4; i++) {
if(i ==0){//初始化的时候,默认显示的图片
jl = new JLabel(new ImageIcon("src\\images\\"+1+".gif"));
}
//按钮
JButton jb = new JButton("第"+(i+1)+"张图");
int z = i;
//当按钮点击的时候
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//设置jl的图片
jl.setIcon(new ImageIcon("src\\images\\"+(z+1)+".gif"));
}
});
jp.add(jb);
}
this.setLocation(200, 120);
this.setSize(500,200);
this.setLayout(new BorderLayout());
this.add(jl);
this.add(jp,BorderLayout.SOUTH);
this.setTitle("图片浏览");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new ImageDemo();
}
}
一个图片时你知道,现在只是切换的问题?
给按钮添加一个 ActionListener,在它的 actionPerformed 方法中做你的事情,把 jpanel.setIcon(..) 换张图片。
你可以这样做,开启一个线程,这个线程启动后睡两秒,两秒之后给主线程发一个消息,在主线程的handleMessage里面跳转到另一个界面
自己写的代码。能通过测试
题目中的要求用线程实现图片的切换
主要有两种方式可以实现。一种是Swing包下的Timer类。一种是Thread类
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MousDemo extends JFrame {
MyJPanel mp;
int index;
ImageIcon[] imgs = { new ImageIcon("C:\\Users\\lenovo\\Desktop\\a.png"),
new ImageIcon("C:\\Users\\lenovo\\Desktop\\b.png") };
public MousDemo() {
mp = new MyJPanel(false);
this.add(mp);
this.setSize(300, 200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setTitle("鼠标窗口");
this.setVisible(true);
/**
* 方式一,使用TImer来切换图片
* Swing下的Timer组件,个人觉得非常适合
* Timer(200,new ActionListener());意思就是每200毫秒执行一次ActionListener里面的方法
* */
Timer timer = new Timer(200,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mp.flag = !mp.flag;
mp.repaint();
}
});
timer.start();
/**
* 方法二:
* 线程的方式
* */
// new Thread(new Runnable() {
//
// @Override
// public void run() {
// while(true){
// mp.flag = !mp.flag;
// mp.repaint();
// try {
// Thread.sleep(200);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
//
// }
// }).start();
}
public static void main(String[] args) {
new MousDemo();
}
class MyJPanel extends JPanel{
boolean flag;
public MyJPanel(boolean flag) {
this.flag = flag;
}
@Override
public void paint(Graphics g) {
super.paint(g);
if(flag == false){
g.drawImage(imgs[0].getImage(), 0, 0,this);
}else{
g.drawImage(imgs[1].getImage(), 0, 0,this);
}
}
}
}
Android中的ViewPager则实现了左右滑动的效果,ViewPager类提供了多界面切换的新效果。利用ViewPager实现图片循环滚动代码如下:
1、首先是布局文件,使用了一个ViewPager控件:
span style="padding: 0px; margin: 0px; font-size: 14px;"RelativeLayout xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/android.support.v4.view.ViewPager
LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/viewpager"
android:background="#33000000"
android:orientation="vertical"
android:padding="5dip"
TextView
android:id="@+id/tv_image_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="第一个引导页面"
android:textColor="@android:color/white"
android:textSize="14sp" /
LinearLayout
android:id="@+id/ll_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
/LinearLayout
/LinearLayout
/RelativeLayout/span
2、接下来实现一个继承PagerAdapter的MyAdapter类,实现一个PagerAdapter,代码如下:
span style="padding: 0px; margin: 0px; font-size: 14px;"package com.example.viewpagertest;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
class ViewPagerAdapter extends PagerAdapter {
private ListImageView mImageViewList;
public ViewPagerAdapter(ListImageView imageViewList) {
super();
this.mImageViewList = imageViewList;
}
/**
* 该方法将返回所包含的 Item总个数。为了实现一种循环滚动的效果,返回了基本整型的最大值,这样就会创建很多的Item,
* 其实这并非是真正的无限循环。
*/
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
/**
* 判断出去的view是否等于进来的view 如果为true直接复用
*/
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
/**
* 销毁预加载以外的view对象, 会把需要销毁的对象的索引位置传进来,就是position,
* 因为mImageViewList只有五条数据,而position将会取到很大的值,
* 所以使用取余数的方法来获取每一条数据项。
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mImageViewList.get(position % mImageViewList.size()));
}
/**
* 创建一个view,
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mImageViewList.get(position % mImageViewList.size()));
return mImageViewList.get(position % mImageViewList.size());
}
}
/span
3、最后是主界面部分的代码:
span style="padding: 0px; margin: 0px; font-size: 14px;"package com.example.viewpagertest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity implements OnPageChangeListener {
private ListImageView imageViewList;
private TextView tvDescription;
private LinearLayout llPoints;
private String[] imageDescriptions;
private int previousSelectPosition = 0;
private ViewPager mViewPager;
private boolean isLoop = true;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setView();
initView();
}
public void setView() {
setContentView(R.layout.activity_splash_viewpager);
// 自动切换页面功能
new Thread(new Runnable() {
@Override
public void run() {
while (isLoop) {
SystemClock.sleep(2000);
handler.sendEmptyMessage(0);
}
}
}).start();
}
public void initView() {
mViewPager = (ViewPager) findViewById(R.id.viewpager);
tvDescription = (TextView) findViewById(R.id.tv_image_description);
llPoints = (LinearLayout) findViewById(R.id.ll_points);
prepareData();
ViewPagerAdapter adapter = new ViewPagerAdapter(imageViewList);
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(this);
tvDescription.setText(imageDescriptions[previousSelectPosition]);
llPoints.getChildAt(previousSelectPosition).setEnabled(true);
/**
* 2147483647 / 2 = 1073741820 - 1
* 设置ViewPager的当前项为一个比较大的数,以便一开始就可以左右循环滑动
*/
int n = Integer.MAX_VALUE / 2 % imageViewList.size();
int itemPosition = Integer.MAX_VALUE / 2 - n;
mViewPager.setCurrentItem(itemPosition);
}
private void prepareData() {
imageViewList = new ArrayListImageView();
int[] imageResIDs = getImageResIDs();
imageDescriptions = getImageDescription();
ImageView iv;
View view;
for (int i = 0; i imageResIDs.length; i++) {
iv = new ImageView(this);
iv.setBackgroundResource(imageResIDs[i]);
imageViewList.add(iv);
// 添加点view对象
view = new View(this);
view.setBackgroundDrawable(getResources().getDrawable(R.drawable.point_background));
LayoutParams lp = new LayoutParams(5, 5);
lp.leftMargin = 10;
view.setLayoutParams(lp);
view.setEnabled(false);
llPoints.addView(view);
}
}
private int[] getImageResIDs() {
return new int[]{
R.drawable.bg1,
R.drawable.bg2,
R.drawable.bg3,
R.drawable.pic_01,
R.drawable.pic_02
};
}
private String[] getImageDescription() {
return new String[]{
"第一个引导页面",
"第二个引导页面",
"第三个引导页面",
"第四个引导页面",
"第五个引导页面"
};
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
// 改变图片的描述信息
tvDescription.setText(imageDescriptions[position % imageViewList.size()]);
// 切换选中的点,把前一个点置为normal状态
llPoints.getChildAt(previousSelectPosition).setEnabled(false);
// 把当前选中的position对应的点置为enabled状态
llPoints.getChildAt(position % imageViewList.size()).setEnabled(true);
previousSelectPosition = position % imageViewList.size();
}
@Override
protected void onDestroy() {
super.onDestroy();
isLoop = false;
}
}
/span