OSDN Git Service

AboutとLicenseを別tabで表示
authoryukihane <yukihane.feather@gmail.com>
Wed, 14 Sep 2011 03:58:57 +0000 (12:58 +0900)
committeryukihane <yukihane.feather@gmail.com>
Wed, 14 Sep 2011 03:58:57 +0000 (12:58 +0900)
frontend/src/saccubus/MainFrame_AboutBox.java

index 101fa00..7a24b3d 100644 (file)
@@ -1,8 +1,8 @@
 package saccubus;
 
-import java.awt.Color;
 import static javax.swing.WindowConstants.*;
 
+import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Frame;
 import java.awt.event.ActionEvent;
@@ -14,12 +14,14 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.swing.BorderFactory;
 import javax.swing.GroupLayout;
+import javax.swing.GroupLayout.Alignment;
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
 import javax.swing.JTextArea;
 import javax.swing.SwingUtilities;
 
@@ -71,45 +73,66 @@ public class MainFrame_AboutBox extends JDialog implements ActionListener {
      * @throws java.lang.Exception
      */
     private void jbInit() {
-        final JPanel basePanel = new JPanel();
+        final JTabbedPane tab = new JTabbedPane(JTabbedPane.BOTTOM);
 
-        final JLabel imageLabel = new JLabel();
+        final JLabel lblImage = new JLabel();
         final ImageIcon icon = new ImageIcon(saccubus.MainFrame_AboutBox.class.getResource("icon.png"));
-        imageLabel.setIcon(icon);
+        lblImage.setIcon(icon);
 
-        final JTextArea productField = createProductField();
-        productField.setOpaque(false);
-        productField.setBorder(BorderFactory.createEmptyBorder());
-        productField.setBackground(new Color(0, 0, 0, 0));
+        final JTextArea fldProduct = createProductField();
+        // Numbus bug 対応
+        // http://stackoverflow.com/questions/613603/java-nimbus-laf-with-transparent-text-fields
+        fldProduct.setOpaque(false);
+        fldProduct.setBorder(BorderFactory.createEmptyBorder());
+        fldProduct.setBackground(new Color(0, 0, 0, 0));
 
-        final JScrollPane licensePane = createLicensePane();
+        final JScrollPane pnlLicense = createLicensePane();
 
         okButton.setText("OK");
         okButton.addActionListener(this);
 
 
-        basePanel.setPreferredSize(new Dimension(500, 600));
-        GroupLayout gl = new GroupLayout(basePanel);
-        basePanel.setLayout(gl);
+        final JPanel pnlAbout = new JPanel();
+        GroupLayout glAbout = new GroupLayout(pnlAbout);
+        pnlAbout.setLayout(glAbout);
+
+        glAbout.setHorizontalGroup(glAbout.createParallelGroup(GroupLayout.Alignment.CENTER)
+            .addGroup(glAbout.createSequentialGroup()
+                .addGap(15).addComponent(lblImage).addGap(30).addComponent(fldProduct).addGap(30))
+        );
+
+        glAbout.setVerticalGroup(glAbout.createSequentialGroup()
+            .addGap(15)
+            .addGroup(glAbout.createParallelGroup()
+                .addComponent(lblImage).addComponent(fldProduct))
+            .addGap(15)
+        );
+
+        tab.add("About", pnlAbout);
+        tab.add("License", pnlLicense);
+
+        final JPanel pnlBase = new JPanel();
+        final GroupLayout glBase = new GroupLayout(pnlBase);
+        pnlBase.setLayout(glBase);
+        glBase.setAutoCreateContainerGaps(true);
+        glBase.setAutoCreateGaps(true);
+
+        glBase.setHorizontalGroup(glBase.createParallelGroup(Alignment.CENTER)
+            .addComponent(tab)
+            .addComponent(okButton)
+        );
 
-        gl.setHorizontalGroup(gl.createParallelGroup(GroupLayout.Alignment.CENTER)
-                .addGroup(gl.createSequentialGroup()
-                    .addGap(15).addComponent(imageLabel).addGap(30).addComponent(productField).addGap(30))
-                .addComponent(licensePane)
-                .addComponent(okButton));
+        glBase.setVerticalGroup(glBase.createSequentialGroup()
+            .addComponent(tab)
+            .addComponent(okButton)
+        );
 
-        gl.setVerticalGroup(gl.createSequentialGroup()
-                .addGap(15)
-                .addGroup(gl.createParallelGroup()
-                    .addComponent(imageLabel).addComponent(productField))
-                .addGap(15)
-                .addComponent(licensePane)
-                .addComponent(okButton));
 
-        getContentPane().add(basePanel, null);
+        setContentPane(pnlBase);
 
         setTitle("バージョン情報");
         setResizable(true);
+        pack();
     }
 
     private JTextArea createProductField() {
@@ -149,6 +172,7 @@ public class MainFrame_AboutBox extends JDialog implements ActionListener {
         licenseField.setCaretPosition(0);
         licenseField.setEditable(false);
         final JScrollPane licensePane = new JScrollPane(licenseField);
+        licensePane.setPreferredSize(new Dimension(400, 400));
         return licensePane;
     }