package hayashi.yuu.register; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class AboutDialog extends JDialog implements WindowListener { static final String TITLE = CardRegister.PROGRAM_NAME; static final String COPY_RIGHT = "All rights reserved.Copyright(c) 2010,, Yuu Hayashi."; JLabel label1; JButton okButton; JLabel label2; JTextArea textArea; JFrame parent; public AboutDialog(JFrame parent, boolean modal) { super(parent, modal); addWindowListener(this); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); this.parent = parent; setTitle("About..."); getContentPane().setLayout(new BorderLayout()); setSize(512,320); //-------------------------------------------------------- // 上部パネル //----------------------------------------------- label1 = new JLabel(TITLE, JLabel.CENTER); add(BorderLayout.NORTH, label1); //-------------------------------------------------------- // 中央パネル //----------------------------------------------- /* * [README.txt]ファイルの内容を表示するTEXTAREA */ textArea = new JTextArea(7, 60); textArea.setEditable(false); textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12)); JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); add(BorderLayout.CENTER, scrollPane); URL url = getClass().getResource("/README.txt"); InputStream is; try { is = url.openStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); while (br.ready()) { textArea.append(br.readLine() + "\n"); } textArea.setCaretPosition(0); br.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } //-------------------------------------------------------- // 下部パネル //----------------------------------------------- JPanel bottonPanel = new JPanel(); bottonPanel.setLayout(new BorderLayout()); add(BorderLayout.SOUTH, bottonPanel); /* * [OK]ボタン : このダイアログウインドウを閉じる */ okButton = new JButton("OK"); okButton.setBounds(145,65,66,27); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new WindowEvent(AboutDialog.this, WindowEvent.WINDOW_CLOSING)); setVisible(false); } }); JPanel okPanel = new JPanel(new FlowLayout()); try { okPanel.add(okButton); } catch(Exception e) { e.printStackTrace(); CardRegister.logger.warning(e.toString()); } bottonPanel.add(BorderLayout.CENTER, okPanel); /* * コピーライト表示 */ label2 = new JLabel(COPY_RIGHT, JLabel.CENTER); label2.setBounds(10,40,340,20); bottonPanel.add(BorderLayout.SOUTH, label2); setVisible(true); } /** * Shows or hides the component depending on the boolean flag b. * @param b if true, show the component; otherwise, hide the component. * @see java.awt.Component#isVisible */ public void setVisible(boolean b) { if (b) { Rectangle bounds = getParent().getBounds(); Rectangle abounds = getBounds(); setLocation(bounds.x + (bounds.width - abounds.width)/ 2, bounds.y + (bounds.height - abounds.height)/2); } super.setVisible(b); } public void windowClosed(WindowEvent e) { setVisible(false); } public void windowActivated(WindowEvent arg0) { } public void windowClosing(WindowEvent arg0) { setVisible(false); } public void windowDeactivated(WindowEvent arg0) { } public void windowDeiconified(WindowEvent arg0) { } public void windowIconified(WindowEvent arg0) { } public void windowOpened(WindowEvent arg0) { } }