* $Id$\r
*/\r
\r
+import java.awt.BorderLayout;\r
import java.awt.Color;\r
import java.awt.Dimension;\r
-import java.awt.FlowLayout;\r
import java.awt.Graphics2D;\r
import java.awt.Point;\r
import java.awt.Polygon;\r
import java.awt.event.ActionListener;\r
import java.awt.image.BufferedImage;\r
\r
+import javax.swing.Box;\r
import javax.swing.Icon;\r
import javax.swing.ImageIcon;\r
import javax.swing.JButton;\r
private JButton button;\r
private JPopupMenu popup;\r
private JButton arrowButton;\r
+ private Icon icon;\r
\r
public PopupButton(JButton initButton){\r
- setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));\r
+ setLayout(new BorderLayout());\r
\r
- this.button = initButton;\r
-\r
- Icon icon = createIcon();\r
+ button = initButton;\r
+ icon = createIcon();\r
arrowButton = new JButton(icon);\r
popup = new JPopupMenu();\r
- add(button);\r
- add(arrowButton);\r
-\r
- Dimension prefferedSize = button.getPreferredSize();\r
-\r
- arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height));\r
- setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height));\r
-\r
- Dimension maxSize = button.getMaximumSize();\r
- arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height));\r
- setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height));\r
-\r
- Dimension minSize = button.getMinimumSize();\r
- arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height));\r
- setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height));\r
+ add(button, BorderLayout.CENTER);\r
+ add(arrowButton, BorderLayout.EAST);\r
\r
- arrowButton.setSize(arrowButton.getPreferredSize());\r
- setSize(getPreferredSize());\r
- \r
arrowButton.addActionListener(new ActionListener(){\r
public void actionPerformed(ActionEvent e){\r
Point p = button.getLocation();\r
popup.show(PopupButton.this, p.x, button.getHeight());\r
}\r
});\r
+ updateUI();\r
}\r
\r
@Override\r
return button;\r
}\r
\r
+ public JMenuItem addMenuItem(JMenuItem menuItem){\r
+ return popup.add(menuItem);\r
+ }\r
+\r
+ public void updateUI(){\r
+ super.updateUI();\r
+ if(button != null){\r
+ Dimension prefferedSize = button.getPreferredSize();\r
+\r
+ arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height));\r
+ setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height));\r
+\r
+ Dimension maxSize = button.getMaximumSize();\r
+ arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height));\r
+ setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height));\r
+\r
+ Dimension minSize = button.getMinimumSize();\r
+ arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height));\r
+ setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height));\r
+\r
+ arrowButton.setSize(arrowButton.getPreferredSize());\r
+ setSize(getPreferredSize());\r
+ }\r
+ }\r
+\r
private Icon createIcon(){\r
BufferedImage image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);\r
Graphics2D g = image.createGraphics();\r
\r
return new ImageIcon(image);\r
}\r
-\r
- public JMenuItem addMenuItem(JMenuItem menuItem){\r
- return popup.add(menuItem);\r
- }\r
}\r