package bs.util.tool.commongui.plugins;
import bs.util.tool.commongui.GuiJPanel;
import bs.util.tool.commongui.GuiUtils;
import bs.util.tool.commongui.utils.TimeUtils;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 时间工具.
*/
public class TimeTool extends GuiJPanel {
private static final long serialVersionUID = 1L;
/**
* 时间格式.
*/
private String[] timeFormatter = new String[]{TimeUtils.Formatter, TimeUtils.Formatter_Millisecond, TimeUtils.Formatter_zh, TimeUtils.Formatter_year, TimeUtils.Formatter_zh_year};
/**
* 当前时间格式.
*/
private String curTimeFormatter = timeFormatter[0];
/**
* 时间字符表单.
*/
private JTextField timeStrTextField = new JTextField(new SimpleDateFormat(curTimeFormatter).format(new Date()));
/**
* 转换.
*/
private JButton convertButton;
/**
* 时间戳表单.
*/
private JTextField timestampTextField = new JTextField(Long.toString(System.currentTimeMillis()));
/**
* 还原.
*/
private JButton revertButton;
public TimeTool() {
// 主面板:边界布局,分North、Center两部分,North用于放置输入及条件控件,Center是放置空面面板
setLayout(new BorderLayout());
// 输入及条件Panel
JPanel inputPanel = new JPanel(new GridLayout(2, 1));
// 时间字符表单、时间格式、转换按钮Panel
JPanel convertPanel = new JPanel(new BorderLayout());
addJLabel(convertPanel, " 时间字符: ", GuiUtils.font14_cn, BorderLayout.WEST);
// 时间字符表单
addJTextField(convertPanel, timeStrTextField, GuiUtils.font14_un, BorderLayout.CENTER);
JPanel convertFlowPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
// 时间格式
addJComboBox(convertFlowPanel, timeFormatter, GuiUtils.font13_cn, new ActionListener() {
public void actionPerformed(ActionEvent event) {
curTimeFormatter = ((JComboBox) event.getSource()).getSelectedItem().toString();
}
});
// 复制
addJButton(convertFlowPanel, "复制", "", GuiUtils.font13_cn, new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
StringSelection selection = new StringSelection(timeStrTextField.getText());
// 获取系统剪切板,复制时间字符
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection);
}
});
// 转换按钮
convertButton = createJButton("转换", "", GuiUtils.font14b_cn);
convertButton.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent event) {
String timeStr = timeStrTextField.getText().trim();
if (timeStr.length() == 0) {
showMessage("没有输入时间字符!", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
timestampTextField.setText("");
convertButton.setEnabled(false);
try {
timestampTextField.setText(Long.toString(new SimpleDateFormat(curTimeFormatter).parse(timeStr).getTime()));
} catch (Exception e) {
showExceptionMessage(e);
}
convertButton.setEnabled(true);
}
public void mousePressed(MouseEvent e) {
timestampTextField.setText("");
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
});
convertFlowPanel.add(convertButton);
convertPanel.add(convertFlowPanel, BorderLayout.EAST);
// 时间戳表单、还原按钮Panel
JPanel revertPanel = new JPanel(new BorderLayout());
addJLabel(revertPanel, " 时 间 戳: ", GuiUtils.font14_cn, BorderLayout.WEST);
// 时间戳表单
addJTextField(revertPanel, timestampTextField, GuiUtils.font14_un, BorderLayout.CENTER);
JPanel revertFlowPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
// 复制
addJButton(revertFlowPanel, "复制", "", GuiUtils.font13_cn, new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
StringSelection selection = new StringSelection(timestampTextField.getText());
// 获取系统剪切板,复制时间戳
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection);
}
});
revertButton = createJButton("还原", "", GuiUtils.font14b_cn);
revertButton.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent event) {
String timestamp = timestampTextField.getText().trim();
if (timestamp.length() == 0) {
showMessage("没有输入时间戳!", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
timeStrTextField.setText("");
revertButton.setEnabled(false);
try {
timeStrTextField.setText(new SimpleDateFormat(curTimeFormatter).format(new Date(Long.parseLong(timestamp))));
} catch (Exception e) {
showExceptionMessage(e);
}
revertButton.setEnabled(true);
}
public void mousePressed(MouseEvent e) {
timeStrTextField.setText("");
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
});
revertFlowPanel.add(revertButton);
revertPanel.add(revertFlowPanel, BorderLayout.EAST);
inputPanel.add(convertPanel);
inputPanel.add(revertPanel);
add(inputPanel, BorderLayout.NORTH);
// 空面面板
JPanel resultPanel = new JPanel(new BorderLayout());
// 空白文本域
JTextArea resultTextArea = createJTextArea(GuiUtils.font14_un);
resultTextArea.setEditable(false);
resultTextArea.setText("");
resultPanel.add(new JScrollPane(resultTextArea));
add(resultPanel, BorderLayout.CENTER);
}
}