📄 playdialog.java
字号:
/*
* PlayDialog2.java
*
* Created on 2008年8月26日, 上午9:14
*/
package com.mwq.album.frame;
import com.mwq.album.dao.Dao;
import com.mwq.album.mwing.PhotoPreviewButton;
import com.mwq.album.tool.ScreenSize;
import com.mwq.album.tool.ToolTip;
import java.awt.Component;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
/**
*
* @author Administrator
*/
public class PlayDialog extends javax.swing.JDialog {
private final Dao dao = Dao.getInstance();
private final Component[] photos;
private final int maxIndex;
private int showIndex = 0;
private boolean isPlay = false;
private boolean isPause = false;
/** Creates new form PlayDialog2 */
public PlayDialog(java.awt.Frame parent, boolean modal, Component... photos) {
super(parent, modal);
initComponents();
this.photos = photos;
maxIndex = photos.length - 1;
setBounds(0, 0, ScreenSize.getWidth(), ScreenSize.getHeight());
handRadioButtonActionPerformed(null);
showPointedPhoto(0);
}
private void showPointedPhoto(int photoIndex) {
Vector photoV = dao.selectPhoto(photos[photoIndex].getName());
photoLabel.setIcon(new ImageIcon(((PhotoPreviewButton) photos[photoIndex]).getPath()));
ToolTip.set(photoLabel, photoV);
infoLabel.setText("第 " + (photoIndex + 1) + " 张 图片名称:" + photoV.get(3) + " 拍摄日期:" + photoV.get(2));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
modeButtonGroup = new javax.swing.ButtonGroup();
handlePanel = new javax.swing.JPanel();
modeLabel = new javax.swing.JLabel();
handRadioButton = new javax.swing.JRadioButton();
autoRadioButton = new javax.swing.JRadioButton();
jLabel1 = new javax.swing.JLabel();
previousButton = new javax.swing.JButton();
nextButton = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
timeLabel = new javax.swing.JLabel();
secondComboBox = new javax.swing.JComboBox();
secondLabel = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
exitButton = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
photoLabel = new javax.swing.JLabel();
infoLabel = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setUndecorated(true);
modeLabel.setText("播放模式:");
handlePanel.add(modeLabel);
modeButtonGroup.add(handRadioButton);
handRadioButton.setSelected(true);
handRadioButton.setText("手动");
handRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
handRadioButtonActionPerformed(evt);
}
});
handlePanel.add(handRadioButton);
modeButtonGroup.add(autoRadioButton);
autoRadioButton.setText("自动");
autoRadioButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
autoRadioButtonActionPerformed(evt);
}
});
handlePanel.add(autoRadioButton);
jLabel1.setText(" ");
handlePanel.add(jLabel1);
previousButton.setText("〈");
previousButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
previousButtonActionPerformed(evt);
}
});
handlePanel.add(previousButton);
nextButton.setText("〉");
nextButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
nextButtonActionPerformed(evt);
}
});
handlePanel.add(nextButton);
jLabel2.setText(" ");
handlePanel.add(jLabel2);
timeLabel.setText("展示时间:");
handlePanel.add(timeLabel);
secondComboBox.setMaximumRowCount(9);
secondComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" }));
handlePanel.add(secondComboBox);
secondLabel.setText("秒");
handlePanel.add(secondLabel);
jLabel3.setText(" ");
handlePanel.add(jLabel3);
exitButton.setText("退出");
exitButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitButtonActionPerformed(evt);
}
});
handlePanel.add(exitButton);
getContentPane().add(handlePanel, java.awt.BorderLayout.PAGE_END);
jPanel1.setLayout(new java.awt.BorderLayout());
photoLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
photoLabel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
photoLabelMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
photoLabelMouseExited(evt);
}
});
jPanel1.add(photoLabel, java.awt.BorderLayout.CENTER);
infoLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jPanel1.add(infoLabel, java.awt.BorderLayout.SOUTH);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>
private void previousButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (showIndex == maxIndex) {// 如果显示照片的索引等于最后一张照片的索引
nextButton.setEnabled(true);// 设置下一张按钮可用
}
showPointedPhoto(--showIndex);// 显示指定照片
if (showIndex == 0) {// 如果显示照片的索引等于0
previousButton.setEnabled(false);// 设置上一张按钮不可用
}
}
private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (showIndex == 0) {// 如果显示照片的索引等于0
previousButton.setEnabled(true);// 设置上一张按钮可用
}
showPointedPhoto(++showIndex);// 显示指定照片
if (showIndex == maxIndex) {// 如果显示照片的索引等于最后一张照片的索引
nextButton.setEnabled(false);// 设置下一张按钮不可用
}
}
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
isPlay = false;// 停止播放
dispose();// 销毁播放器对话框
}
private void handRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
isPlay = false;// 采用手动查看模式
previousButton.setEnabled(true);// 设置上一张按钮可用
nextButton.setEnabled(true);// 设置下一张按钮可用
timeLabel.setEnabled(false);// 设置展示时间标签不可用
secondComboBox.setEnabled(false);// 设置时间组合框不可用
secondLabel.setEnabled(false);// 设置单位标签不可用
}
private void autoRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
isPlay = true;// 采用自动播放模式
previousButton.setEnabled(false);// 设置上一张按钮不可用
nextButton.setEnabled(false);// 设置下一张按钮不可用
timeLabel.setEnabled(true);// 设置展示时间标签可用
secondComboBox.setEnabled(true);// 设置时间组合框可用
secondLabel.setEnabled(true);// 设置单位标签可用
new Thread() {// 创建并开启一张线程
@Override
public void run() {// 重构该方法
close:
while (isPlay) {// 如果采用自动播放模式
for (int i = showIndex; i < maxIndex + 1; i++) {// 遍历照片
showPointedPhoto(i);// 显示指定照片
try {
Thread.sleep((secondComboBox.getSelectedIndex() + 1) * 1000);// 修面指定秒
while (isPause) {// 如果暂停播放
Thread.sleep(500);// 休眠500毫秒
}
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!isPlay) {// 如果采用手动查看模式
break close;// 停止播放
}
}
int i = JOptionPane.showOptionDialog(PlayDialog.this, "图片播放完毕!", "播放完毕",
JOptionPane.INFORMATION_MESSAGE, JOptionPane.YES_OPTION, null,
new String[]{"重复播放", "从头播放", "退出播放"}, "退出播放");
if (i > 0) {
if (i == 1) {// 从头播放
showIndex = 0;
} else {// 退出播放
isPlay = false;// 停止播放
PlayDialog.this.dispose();// 销毁播放器对话框
}
}
}
}
}.start();
}
private void photoLabelMouseEntered(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
isPause = true;// 暂停播放
}
private void photoLabelMouseExited(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
isPause = false;// 继续播放
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
PlayDialog dialog = new PlayDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JRadioButton autoRadioButton;
private javax.swing.JButton exitButton;
private javax.swing.JRadioButton handRadioButton;
private javax.swing.JPanel handlePanel;
private javax.swing.JLabel infoLabel;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.ButtonGroup modeButtonGroup;
private javax.swing.JLabel modeLabel;
private javax.swing.JButton nextButton;
private javax.swing.JLabel photoLabel;
private javax.swing.JButton previousButton;
private javax.swing.JComboBox secondComboBox;
private javax.swing.JLabel secondLabel;
private javax.swing.JLabel timeLabel;
// End of variables declaration
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -