3
我有一組圖像存儲在一個數組中,我需要像幻燈片一樣顯示它們。有兩個JButton可以讓用戶看到圖像。但是我無法使按鈕工作。任何建議?JButton需要顯示圖像陣列
感謝
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
public class slides extends JPanel implements ActionListener {
// Data Field
private final ImageIcon imageArray[];
private ImageIcon image;
JButton nextButton;
JButton prevButton;
int page = 0;
int nextPage = page + 1;
int prevPage = page - 1;
int numOfSlides = 28;
// Obtains and stores slides in imageArray
public slides() {
imageArray = new ImageIcon[numOfSlides];
for (int i = 0; i < imageArray.length; i++) {
imageArray[i] = new ImageIcon("Slide " + (i + 1) + ".png");
}
}
// Displays slides
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
boolean began = true;
// creates next button
nextButton = new JButton("next");
nextButton.setBounds(400, 574, 70, 30);
nextButton.addActionListener(this);
add(nextButton);
// creates previous button
prevButton = new JButton("previous");
prevButton.setBounds(0, 574, 85, 30);
prevButton.addActionListener(this);
add(prevButton);
// displays slide 1
if (began == true) {
image = imageArray[page];
image.paintIcon(this, g, 0, 0);
began = false;
}
// displays other slides based on preference
if (page == nextPage) {
image = imageArray[page + 1];
image.paintIcon(this, g, 0, 0);
nextPage = page + 1;
prevPage = page - 1;
}
if (page == prevPage) {
nextPage = page + 1;
prevPage = page - 1;
image = imageArray[page - 1];
image.paintIcon(this, g, 0, 0);
}
// Removes buttons accordingly
if(page == imageArray.length - 1) {
remove(nextButton);
}
if(page == 0){
remove(prevButton);
}
}
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == nextButton) {
page++;
image = imageArray[page];
}
if (event.getSource() == prevButton) {
page--;
image = imageArray[page];
}
}
}
什麼是完全相同的問題,也就是你所說的「不能讓這些按鈕的工作」是什麼意思?你能向我們展示一個[MCVE](http://stackoverflow.com/help/mcve)嗎? – BluesSolo 2014-12-04 11:02:07
paintIcon意思是你必須重寫paintIcon,那麼paintComponent就沒用了 – mKorbel 2014-12-04 11:04:53
從paintComponent裏面的代碼中刪除一切(可以每秒執行幾次)其餘的是在Oracle教程 – mKorbel 2014-12-04 11:06:09