<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_Components%2FBorder</id>
		<title>Java/Swing Components/Border - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_Components%2FBorder"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Border&amp;action=history"/>
		<updated>2026-04-22T22:20:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Border&amp;diff=8231&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Border&amp;diff=8231&amp;oldid=prev"/>
				<updated>2010-06-01T06:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:56, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Border&amp;diff=8230&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Border&amp;diff=8230&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Add decorators to swing component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Component TitledPane Example 1 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.ButtonGroup;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JRadioButton;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
import javax.swing.border.TitledBorder;&lt;br /&gt;
/**&lt;br /&gt;
 * @version 1.0 08/12/99&lt;br /&gt;
 */&lt;br /&gt;
public class CompTitledPaneExample1 extends JFrame {&lt;br /&gt;
  String title = &amp;quot;&amp;lt;html&amp;gt;Title (&amp;quot;&lt;br /&gt;
      + &amp;quot;&amp;lt;font color=\&amp;quot;#ffffff\&amp;quot;&amp;gt;&amp;lt;i&amp;gt;JLabel&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&amp;quot; + &amp;quot;)&amp;quot;;&lt;br /&gt;
  public CompTitledPaneExample1() {&lt;br /&gt;
    super(&amp;quot;CompTitledPaneExample1&amp;quot;);&lt;br /&gt;
    JLabel titleLabel = new JLabel(title);&lt;br /&gt;
    CompTitledPane p1 = new CompTitledPane(titleLabel);&lt;br /&gt;
    JPanel p = p1.getContentPane();&lt;br /&gt;
    p.setLayout(new BorderLayout());&lt;br /&gt;
    p.add(new SwitchPanel(p1), BorderLayout.CENTER);&lt;br /&gt;
    getContentPane().add(p1, BorderLayout.CENTER);&lt;br /&gt;
  }&lt;br /&gt;
  class SwitchPanel extends JPanel implements ActionListener {&lt;br /&gt;
    String[] posStr = { &amp;quot;&amp;quot;, &amp;quot;ABOVE_TOP&amp;quot;, &amp;quot;TOP&amp;quot;, &amp;quot;BELOW_TOP&amp;quot;,&lt;br /&gt;
        &amp;quot;ABOVE_BOTTOM&amp;quot;, &amp;quot;BOTTOM&amp;quot;, &amp;quot;BELOW_BOTTOM&amp;quot; };&lt;br /&gt;
    String[] jusStr = { &amp;quot;&amp;quot;, &amp;quot;LEFT&amp;quot;, &amp;quot;CENTER&amp;quot;, &amp;quot;RIGHT&amp;quot; };&lt;br /&gt;
    TitledBorder border;&lt;br /&gt;
    CompTitledPane panel;&lt;br /&gt;
    SwitchPanel(CompTitledPane panel) {&lt;br /&gt;
      this.panel = panel;&lt;br /&gt;
      this.border = (TitledBorder) panel.getBorder();&lt;br /&gt;
      add(createPanel(&amp;quot;Position&amp;quot;, posStr, 2));&lt;br /&gt;
      add(createPanel(&amp;quot;Justification&amp;quot;, jusStr, 1));&lt;br /&gt;
    }&lt;br /&gt;
    JPanel createPanel(String str, String[] strs, int selectPos) {&lt;br /&gt;
      JPanel p = new JPanel();&lt;br /&gt;
      p.setLayout(new GridLayout(strs.length, 1));&lt;br /&gt;
      p.add(new JLabel(str));&lt;br /&gt;
      ButtonGroup g = new ButtonGroup();&lt;br /&gt;
      for (int i = 1; i &amp;lt; strs.length; i++) {&lt;br /&gt;
        JRadioButton b = new JRadioButton(strs[i]);&lt;br /&gt;
        if (i == selectPos) {&lt;br /&gt;
          b.setSelected(true);&lt;br /&gt;
        }&lt;br /&gt;
        p.add(b);&lt;br /&gt;
        g.add(b);&lt;br /&gt;
        b.addActionListener(this);&lt;br /&gt;
      }&lt;br /&gt;
      return p;&lt;br /&gt;
    }&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      JRadioButton b = (JRadioButton) e.getSource();&lt;br /&gt;
      String label = b.getText();&lt;br /&gt;
      for (int i = 1; i &amp;lt; posStr.length; i++) {&lt;br /&gt;
        if (label.equals(posStr[i])) {&lt;br /&gt;
          border.setTitlePosition(i);&lt;br /&gt;
          panel.revalidate();&lt;br /&gt;
          panel.repaint();&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      for (int i = 1; i &amp;lt; jusStr.length; i++) {&lt;br /&gt;
        if (label.equals(jusStr[i])) {&lt;br /&gt;
          border.setTitleJustification(i);&lt;br /&gt;
          panel.revalidate();&lt;br /&gt;
          panel.repaint();&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try {&lt;br /&gt;
        UIManager.setLookAndFeel(&amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;);&lt;br /&gt;
    } catch (Exception evt) {}&lt;br /&gt;
  &lt;br /&gt;
    CompTitledPaneExample1 frame = new CompTitledPaneExample1();&lt;br /&gt;
    frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    frame.setSize(280, 230);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * @version 1.0 08/12/99&lt;br /&gt;
 */&lt;br /&gt;
class CompTitledPane extends JPanel {&lt;br /&gt;
  protected CompTitledBorder border;&lt;br /&gt;
  protected JComponent component;&lt;br /&gt;
  protected JPanel panel;&lt;br /&gt;
  protected boolean transmittingAllowed;&lt;br /&gt;
  protected StateTransmitter transmitter;&lt;br /&gt;
  public CompTitledPane() {&lt;br /&gt;
    this(new JLabel(&amp;quot;Title&amp;quot;));&lt;br /&gt;
    // debug&lt;br /&gt;
    // JLabel label = (JLabel)getTitleComponent();&lt;br /&gt;
    // label.setOpaque(true);&lt;br /&gt;
    // label.setBackground(Color.yellow);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledPane(JComponent component) {&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
    border = new CompTitledBorder(component);&lt;br /&gt;
    setBorder(border);&lt;br /&gt;
    panel = new JPanel();&lt;br /&gt;
    setLayout(null);&lt;br /&gt;
    add(component);&lt;br /&gt;
    add(panel);&lt;br /&gt;
    transmittingAllowed = false;&lt;br /&gt;
    transmitter = null;&lt;br /&gt;
  }&lt;br /&gt;
  public JComponent getTitleComponent() {&lt;br /&gt;
    return component;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTitleComponent(JComponent newComponent) {&lt;br /&gt;
    remove(component);&lt;br /&gt;
    add(newComponent);&lt;br /&gt;
    border.setTitleComponent(newComponent);&lt;br /&gt;
    component = newComponent;&lt;br /&gt;
  }&lt;br /&gt;
  public JPanel getContentPane() {&lt;br /&gt;
    return panel;&lt;br /&gt;
  }&lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets insets = getInsets();&lt;br /&gt;
    Rectangle rect = getBounds();&lt;br /&gt;
    rect.x = 0;&lt;br /&gt;
    rect.y = 0;&lt;br /&gt;
    Rectangle compR = border.getComponentRect(rect, insets);&lt;br /&gt;
    component.setBounds(compR);&lt;br /&gt;
    rect.x += insets.left;&lt;br /&gt;
    rect.y += insets.top;&lt;br /&gt;
    rect.width -= insets.left + insets.right;&lt;br /&gt;
    rect.height -= insets.top + insets.bottom;&lt;br /&gt;
    panel.setBounds(rect);&lt;br /&gt;
  }&lt;br /&gt;
  public void setTransmittingAllowed(boolean enable) {&lt;br /&gt;
    transmittingAllowed = enable;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean getTransmittingAllowed() {&lt;br /&gt;
    return transmittingAllowed;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTransmitter(StateTransmitter transmitter) {&lt;br /&gt;
    this.transmitter = transmitter;&lt;br /&gt;
  }&lt;br /&gt;
  public StateTransmitter getTransmitter() {&lt;br /&gt;
    return transmitter;&lt;br /&gt;
  }&lt;br /&gt;
  public void setEnabled(boolean enable) {&lt;br /&gt;
    super.setEnabled(enable);&lt;br /&gt;
    if (transmittingAllowed &amp;amp;&amp;amp; transmitter != null) {&lt;br /&gt;
      transmitter.setChildrenEnabled(enable);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface StateTransmitter {&lt;br /&gt;
  public void setChildrenEnabled(boolean enable);&lt;br /&gt;
}&lt;br /&gt;
class CompTitledBorder extends TitledBorder {&lt;br /&gt;
  protected JComponent component;&lt;br /&gt;
  public CompTitledBorder(JComponent component) {&lt;br /&gt;
    this(null, component, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border) {&lt;br /&gt;
    this(border, null, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border, JComponent component) {&lt;br /&gt;
    this(border, component, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border, JComponent component,&lt;br /&gt;
      int titleJustification, int titlePosition) {&lt;br /&gt;
    super(border, null, titleJustification, titlePosition, null, null);&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
    if (border == null) {&lt;br /&gt;
      this.border = super.getBorder();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void paintBorder(Component c, Graphics g, int x, int y, int width,&lt;br /&gt;
      int height) {&lt;br /&gt;
    Rectangle borderR = new Rectangle(x + EDGE_SPACING, y + EDGE_SPACING,&lt;br /&gt;
        width - (EDGE_SPACING * 2), height - (EDGE_SPACING * 2));&lt;br /&gt;
    Insets borderInsets;&lt;br /&gt;
    if (border != null) {&lt;br /&gt;
      borderInsets = border.getBorderInsets(c);&lt;br /&gt;
    } else {&lt;br /&gt;
      borderInsets = new Insets(0, 0, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    Rectangle rect = new Rectangle(x, y, width, height);&lt;br /&gt;
    Insets insets = getBorderInsets(c);&lt;br /&gt;
    Rectangle compR = getComponentRect(rect, insets);&lt;br /&gt;
    int diff;&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      diff = compR.height + TEXT_SPACING;&lt;br /&gt;
      borderR.y += diff;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      diff = insets.top / 2 - borderInsets.top - EDGE_SPACING;&lt;br /&gt;
      borderR.y += diff;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      diff = insets.bottom / 2 - borderInsets.bottom - EDGE_SPACING;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      diff = compR.height + TEXT_SPACING;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    border.paintBorder(c, g, borderR.x, borderR.y, borderR.width,&lt;br /&gt;
        borderR.height);&lt;br /&gt;
    Color col = g.getColor();&lt;br /&gt;
    g.setColor(c.getBackground());&lt;br /&gt;
    g.fillRect(compR.x, compR.y, compR.width, compR.height);&lt;br /&gt;
    g.setColor(col);&lt;br /&gt;
    component.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Insets getBorderInsets(Component c, Insets insets) {&lt;br /&gt;
    Insets borderInsets;&lt;br /&gt;
    if (border != null) {&lt;br /&gt;
      borderInsets = border.getBorderInsets(c);&lt;br /&gt;
    } else {&lt;br /&gt;
      borderInsets = new Insets(0, 0, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    insets.top = EDGE_SPACING + TEXT_SPACING + borderInsets.top;&lt;br /&gt;
    insets.right = EDGE_SPACING + TEXT_SPACING + borderInsets.right;&lt;br /&gt;
    insets.bottom = EDGE_SPACING + TEXT_SPACING + borderInsets.bottom;&lt;br /&gt;
    insets.left = EDGE_SPACING + TEXT_SPACING + borderInsets.left;&lt;br /&gt;
    if (c == null || component == null) {&lt;br /&gt;
      return insets;&lt;br /&gt;
    }&lt;br /&gt;
    int compHeight = 0;&lt;br /&gt;
    if (component != null) {&lt;br /&gt;
      compHeight = component.getPreferredSize().height;&lt;br /&gt;
    }&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      insets.top += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      insets.top += Math.max(compHeight, borderInsets.top)&lt;br /&gt;
          - borderInsets.top;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
      insets.top += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      insets.bottom += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      insets.bottom += Math.max(compHeight, borderInsets.bottom)&lt;br /&gt;
          - borderInsets.bottom;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      insets.bottom += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return insets;&lt;br /&gt;
  }&lt;br /&gt;
  public JComponent getTitleComponent() {&lt;br /&gt;
    return component;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTitleComponent(JComponent component) {&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
  }&lt;br /&gt;
  public Rectangle getComponentRect(Rectangle rect, Insets borderInsets) {&lt;br /&gt;
    Dimension compD = component.getPreferredSize();&lt;br /&gt;
    Rectangle compR = new Rectangle(0, 0, compD.width, compD.height);&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      compR.y = EDGE_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      compR.y = EDGE_SPACING&lt;br /&gt;
          + (borderInsets.top - EDGE_SPACING - TEXT_SPACING - compD.height)&lt;br /&gt;
          / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
      compR.y = borderInsets.top - compD.height - TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      compR.y = rect.height - borderInsets.bottom + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      compR.y = rect.height&lt;br /&gt;
          - borderInsets.bottom&lt;br /&gt;
          + TEXT_SPACING&lt;br /&gt;
          + (borderInsets.bottom - EDGE_SPACING - TEXT_SPACING - compD.height)&lt;br /&gt;
          / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      compR.y = rect.height - compD.height - EDGE_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    switch (titleJustification) {&lt;br /&gt;
    case LEFT:&lt;br /&gt;
    case DEFAULT_JUSTIFICATION:&lt;br /&gt;
      compR.x = TEXT_INSET_H + borderInsets.left;&lt;br /&gt;
      break;&lt;br /&gt;
    case RIGHT:&lt;br /&gt;
      compR.x = rect.width - borderInsets.right - TEXT_INSET_H&lt;br /&gt;
          - compR.width;&lt;br /&gt;
      break;&lt;br /&gt;
    case CENTER:&lt;br /&gt;
      compR.x = (rect.width - compR.width) / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return compR;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Component TitledPane Example 2 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html&lt;br /&gt;
/* (swing1.1.1) */&lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
import javax.swing.border.TitledBorder;&lt;br /&gt;
/**&lt;br /&gt;
 * @version 1.0 08/12/99&lt;br /&gt;
 */&lt;br /&gt;
public class CompTitledPaneExample2 extends JFrame {&lt;br /&gt;
  public CompTitledPaneExample2() {&lt;br /&gt;
    super(&amp;quot;CompTitledPaneExample2&amp;quot;);&lt;br /&gt;
    JCheckBox title = new JCheckBox(&amp;quot;Title&amp;quot;);&lt;br /&gt;
    title.setSelected(true);&lt;br /&gt;
    final CompTitledPane p1 = new CompTitledPane(title);&lt;br /&gt;
    title.addItemListener(new ItemListener() {&lt;br /&gt;
      public void itemStateChanged(ItemEvent e) {&lt;br /&gt;
        p1.setEnabled(e.getStateChange() == ItemEvent.SELECTED);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    APanel p2 = new APanel();&lt;br /&gt;
    p1.setTransmittingAllowed(true);&lt;br /&gt;
    p1.setTransmitter(p2);&lt;br /&gt;
    p1.getContentPane().add(p2);&lt;br /&gt;
    getContentPane().add(p1, BorderLayout.CENTER);&lt;br /&gt;
  }&lt;br /&gt;
  class APanel extends JPanel implements StateTransmitter {&lt;br /&gt;
    JButton button;&lt;br /&gt;
    JTextField textField;&lt;br /&gt;
    APanel() {&lt;br /&gt;
      button = new JButton(&amp;quot;abc&amp;quot;);&lt;br /&gt;
      button.addActionListener(new ActionListener() {&lt;br /&gt;
        public void actionPerformed(ActionEvent e) {&lt;br /&gt;
          System.out.println(&amp;quot;Ouch!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      textField = new JTextField(10);&lt;br /&gt;
      textField.setText(&amp;quot;text&amp;quot;);&lt;br /&gt;
      add(button, BorderLayout.NORTH);&lt;br /&gt;
      add(textField, BorderLayout.SOUTH);&lt;br /&gt;
    }&lt;br /&gt;
    public void setChildrenEnabled(boolean enable) {&lt;br /&gt;
      button.setEnabled(enable);&lt;br /&gt;
      textField.setEnabled(enable);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try {&lt;br /&gt;
        UIManager.setLookAndFeel(&amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;);&lt;br /&gt;
    } catch (Exception evt) {}&lt;br /&gt;
  &lt;br /&gt;
    CompTitledPaneExample2 frame = new CompTitledPaneExample2();&lt;br /&gt;
    frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    frame.setSize(280, 110);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CompTitledPane extends JPanel {&lt;br /&gt;
  protected CompTitledBorder border;&lt;br /&gt;
  protected JComponent component;&lt;br /&gt;
  protected JPanel panel;&lt;br /&gt;
  protected boolean transmittingAllowed;&lt;br /&gt;
  protected StateTransmitter transmitter;&lt;br /&gt;
  public CompTitledPane() {&lt;br /&gt;
    this(new JLabel(&amp;quot;Title&amp;quot;));&lt;br /&gt;
    // debug&lt;br /&gt;
    // JLabel label = (JLabel)getTitleComponent();&lt;br /&gt;
    // label.setOpaque(true);&lt;br /&gt;
    // label.setBackground(Color.yellow);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledPane(JComponent component) {&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
    border = new CompTitledBorder(component);&lt;br /&gt;
    setBorder(border);&lt;br /&gt;
    panel = new JPanel();&lt;br /&gt;
    setLayout(null);&lt;br /&gt;
    add(component);&lt;br /&gt;
    add(panel);&lt;br /&gt;
    transmittingAllowed = false;&lt;br /&gt;
    transmitter = null;&lt;br /&gt;
  }&lt;br /&gt;
  public JComponent getTitleComponent() {&lt;br /&gt;
    return component;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTitleComponent(JComponent newComponent) {&lt;br /&gt;
    remove(component);&lt;br /&gt;
    add(newComponent);&lt;br /&gt;
    border.setTitleComponent(newComponent);&lt;br /&gt;
    component = newComponent;&lt;br /&gt;
  }&lt;br /&gt;
  public JPanel getContentPane() {&lt;br /&gt;
    return panel;&lt;br /&gt;
  }&lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets insets = getInsets();&lt;br /&gt;
    Rectangle rect = getBounds();&lt;br /&gt;
    rect.x = 0;&lt;br /&gt;
    rect.y = 0;&lt;br /&gt;
    Rectangle compR = border.getComponentRect(rect, insets);&lt;br /&gt;
    component.setBounds(compR);&lt;br /&gt;
    rect.x += insets.left;&lt;br /&gt;
    rect.y += insets.top;&lt;br /&gt;
    rect.width -= insets.left + insets.right;&lt;br /&gt;
    rect.height -= insets.top + insets.bottom;&lt;br /&gt;
    panel.setBounds(rect);&lt;br /&gt;
  }&lt;br /&gt;
  public void setTransmittingAllowed(boolean enable) {&lt;br /&gt;
    transmittingAllowed = enable;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean getTransmittingAllowed() {&lt;br /&gt;
    return transmittingAllowed;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTransmitter(StateTransmitter transmitter) {&lt;br /&gt;
    this.transmitter = transmitter;&lt;br /&gt;
  }&lt;br /&gt;
  public StateTransmitter getTransmitter() {&lt;br /&gt;
    return transmitter;&lt;br /&gt;
  }&lt;br /&gt;
  public void setEnabled(boolean enable) {&lt;br /&gt;
    super.setEnabled(enable);&lt;br /&gt;
    if (transmittingAllowed &amp;amp;&amp;amp; transmitter != null) {&lt;br /&gt;
      transmitter.setChildrenEnabled(enable);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface StateTransmitter {&lt;br /&gt;
  public void setChildrenEnabled(boolean enable);&lt;br /&gt;
}&lt;br /&gt;
class CompTitledBorder extends TitledBorder {&lt;br /&gt;
  protected JComponent component;&lt;br /&gt;
  public CompTitledBorder(JComponent component) {&lt;br /&gt;
    this(null, component, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border) {&lt;br /&gt;
    this(border, null, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border, JComponent component) {&lt;br /&gt;
    this(border, component, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border, JComponent component,&lt;br /&gt;
      int titleJustification, int titlePosition) {&lt;br /&gt;
    super(border, null, titleJustification, titlePosition, null, null);&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
    if (border == null) {&lt;br /&gt;
      this.border = super.getBorder();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void paintBorder(Component c, Graphics g, int x, int y, int width,&lt;br /&gt;
      int height) {&lt;br /&gt;
    Rectangle borderR = new Rectangle(x + EDGE_SPACING, y + EDGE_SPACING,&lt;br /&gt;
        width - (EDGE_SPACING * 2), height - (EDGE_SPACING * 2));&lt;br /&gt;
    Insets borderInsets;&lt;br /&gt;
    if (border != null) {&lt;br /&gt;
      borderInsets = border.getBorderInsets(c);&lt;br /&gt;
    } else {&lt;br /&gt;
      borderInsets = new Insets(0, 0, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    Rectangle rect = new Rectangle(x, y, width, height);&lt;br /&gt;
    Insets insets = getBorderInsets(c);&lt;br /&gt;
    Rectangle compR = getComponentRect(rect, insets);&lt;br /&gt;
    int diff;&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      diff = compR.height + TEXT_SPACING;&lt;br /&gt;
      borderR.y += diff;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      diff = insets.top / 2 - borderInsets.top - EDGE_SPACING;&lt;br /&gt;
      borderR.y += diff;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      diff = insets.bottom / 2 - borderInsets.bottom - EDGE_SPACING;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      diff = compR.height + TEXT_SPACING;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    border.paintBorder(c, g, borderR.x, borderR.y, borderR.width,&lt;br /&gt;
        borderR.height);&lt;br /&gt;
    Color col = g.getColor();&lt;br /&gt;
    g.setColor(c.getBackground());&lt;br /&gt;
    g.fillRect(compR.x, compR.y, compR.width, compR.height);&lt;br /&gt;
    g.setColor(col);&lt;br /&gt;
    component.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Insets getBorderInsets(Component c, Insets insets) {&lt;br /&gt;
    Insets borderInsets;&lt;br /&gt;
    if (border != null) {&lt;br /&gt;
      borderInsets = border.getBorderInsets(c);&lt;br /&gt;
    } else {&lt;br /&gt;
      borderInsets = new Insets(0, 0, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    insets.top = EDGE_SPACING + TEXT_SPACING + borderInsets.top;&lt;br /&gt;
    insets.right = EDGE_SPACING + TEXT_SPACING + borderInsets.right;&lt;br /&gt;
    insets.bottom = EDGE_SPACING + TEXT_SPACING + borderInsets.bottom;&lt;br /&gt;
    insets.left = EDGE_SPACING + TEXT_SPACING + borderInsets.left;&lt;br /&gt;
    if (c == null || component == null) {&lt;br /&gt;
      return insets;&lt;br /&gt;
    }&lt;br /&gt;
    int compHeight = 0;&lt;br /&gt;
    if (component != null) {&lt;br /&gt;
      compHeight = component.getPreferredSize().height;&lt;br /&gt;
    }&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      insets.top += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      insets.top += Math.max(compHeight, borderInsets.top)&lt;br /&gt;
          - borderInsets.top;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
      insets.top += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      insets.bottom += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      insets.bottom += Math.max(compHeight, borderInsets.bottom)&lt;br /&gt;
          - borderInsets.bottom;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      insets.bottom += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return insets;&lt;br /&gt;
  }&lt;br /&gt;
  public JComponent getTitleComponent() {&lt;br /&gt;
    return component;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTitleComponent(JComponent component) {&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
  }&lt;br /&gt;
  public Rectangle getComponentRect(Rectangle rect, Insets borderInsets) {&lt;br /&gt;
    Dimension compD = component.getPreferredSize();&lt;br /&gt;
    Rectangle compR = new Rectangle(0, 0, compD.width, compD.height);&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      compR.y = EDGE_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      compR.y = EDGE_SPACING&lt;br /&gt;
          + (borderInsets.top - EDGE_SPACING - TEXT_SPACING - compD.height)&lt;br /&gt;
          / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
      compR.y = borderInsets.top - compD.height - TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      compR.y = rect.height - borderInsets.bottom + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      compR.y = rect.height&lt;br /&gt;
          - borderInsets.bottom&lt;br /&gt;
          + TEXT_SPACING&lt;br /&gt;
          + (borderInsets.bottom - EDGE_SPACING - TEXT_SPACING - compD.height)&lt;br /&gt;
          / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      compR.y = rect.height - compD.height - EDGE_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    switch (titleJustification) {&lt;br /&gt;
    case LEFT:&lt;br /&gt;
    case DEFAULT_JUSTIFICATION:&lt;br /&gt;
      compR.x = TEXT_INSET_H + borderInsets.left;&lt;br /&gt;
      break;&lt;br /&gt;
    case RIGHT:&lt;br /&gt;
      compR.x = rect.width - borderInsets.right - TEXT_INSET_H&lt;br /&gt;
          - compR.width;&lt;br /&gt;
      break;&lt;br /&gt;
    case CENTER:&lt;br /&gt;
      compR.x = (rect.width - compR.width) / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return compR;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Component TitledPane Example 3 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html&lt;br /&gt;
/* (swing1.1.1) */&lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.ButtonGroup;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JRadioButton;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
import javax.swing.border.TitledBorder;&lt;br /&gt;
/**&lt;br /&gt;
 * @version 1.0 08/13/99&lt;br /&gt;
 */&lt;br /&gt;
public class CompTitledPaneExample3 extends JFrame {&lt;br /&gt;
  public CompTitledPaneExample3() {&lt;br /&gt;
    super(&amp;quot;CompTitledPaneExample3&amp;quot;);&lt;br /&gt;
    Container c = getContentPane();&lt;br /&gt;
    c.setLayout(new GridLayout(2, 2));&lt;br /&gt;
    ButtonGroup group = new ButtonGroup();&lt;br /&gt;
    APanel p = new APanel(group, &amp;quot;Metal&amp;quot;);&lt;br /&gt;
    c.add(p);&lt;br /&gt;
    c.add(new APanel(group, &amp;quot;Motif&amp;quot;));&lt;br /&gt;
    c.add(new APanel(group, &amp;quot;Mac&amp;quot;));&lt;br /&gt;
    c.add(new APanel(group, &amp;quot;Windows&amp;quot;));&lt;br /&gt;
    p.getRadioButton().setSelected(true);&lt;br /&gt;
  }&lt;br /&gt;
  class APanel extends CompTitledPane {&lt;br /&gt;
    JRadioButton titleComp;&lt;br /&gt;
    APanel(ButtonGroup group, final String text) {&lt;br /&gt;
      titleComp = new JRadioButton(text);&lt;br /&gt;
      final JButton button = new JButton(text);&lt;br /&gt;
      setTitleComponent(titleComp);&lt;br /&gt;
      this.titleComp = titleComp;&lt;br /&gt;
      group.add(titleComp);&lt;br /&gt;
      titleComp.setSelected(true);&lt;br /&gt;
      titleComp.addItemListener(new ItemListener() {&lt;br /&gt;
        public void itemStateChanged(ItemEvent e) {&lt;br /&gt;
          button.setEnabled(e.getStateChange() == ItemEvent.SELECTED);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      button.addActionListener(new ActionListener() {&lt;br /&gt;
        public void actionPerformed(ActionEvent e) {&lt;br /&gt;
          System.out.println(text);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      getContentPane().add(button);&lt;br /&gt;
    }&lt;br /&gt;
    public JRadioButton getRadioButton() {&lt;br /&gt;
      return titleComp;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try {&lt;br /&gt;
        UIManager.setLookAndFeel(&amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;);&lt;br /&gt;
    } catch (Exception evt) {}&lt;br /&gt;
  &lt;br /&gt;
    CompTitledPaneExample3 frame = new CompTitledPaneExample3();&lt;br /&gt;
    frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    frame.setSize(280, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CompTitledPane extends JPanel {&lt;br /&gt;
  protected CompTitledBorder border;&lt;br /&gt;
  protected JComponent component;&lt;br /&gt;
  protected JPanel panel;&lt;br /&gt;
  protected boolean transmittingAllowed;&lt;br /&gt;
  protected StateTransmitter transmitter;&lt;br /&gt;
  public CompTitledPane() {&lt;br /&gt;
    this(new JLabel(&amp;quot;Title&amp;quot;));&lt;br /&gt;
    // debug&lt;br /&gt;
    // JLabel label = (JLabel)getTitleComponent();&lt;br /&gt;
    // label.setOpaque(true);&lt;br /&gt;
    // label.setBackground(Color.yellow);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledPane(JComponent component) {&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
    border = new CompTitledBorder(component);&lt;br /&gt;
    setBorder(border);&lt;br /&gt;
    panel = new JPanel();&lt;br /&gt;
    setLayout(null);&lt;br /&gt;
    add(component);&lt;br /&gt;
    add(panel);&lt;br /&gt;
    transmittingAllowed = false;&lt;br /&gt;
    transmitter = null;&lt;br /&gt;
  }&lt;br /&gt;
  public JComponent getTitleComponent() {&lt;br /&gt;
    return component;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTitleComponent(JComponent newComponent) {&lt;br /&gt;
    remove(component);&lt;br /&gt;
    add(newComponent);&lt;br /&gt;
    border.setTitleComponent(newComponent);&lt;br /&gt;
    component = newComponent;&lt;br /&gt;
  }&lt;br /&gt;
  public JPanel getContentPane() {&lt;br /&gt;
    return panel;&lt;br /&gt;
  }&lt;br /&gt;
  public void doLayout() {&lt;br /&gt;
    Insets insets = getInsets();&lt;br /&gt;
    Rectangle rect = getBounds();&lt;br /&gt;
    rect.x = 0;&lt;br /&gt;
    rect.y = 0;&lt;br /&gt;
    Rectangle compR = border.getComponentRect(rect, insets);&lt;br /&gt;
    component.setBounds(compR);&lt;br /&gt;
    rect.x += insets.left;&lt;br /&gt;
    rect.y += insets.top;&lt;br /&gt;
    rect.width -= insets.left + insets.right;&lt;br /&gt;
    rect.height -= insets.top + insets.bottom;&lt;br /&gt;
    panel.setBounds(rect);&lt;br /&gt;
  }&lt;br /&gt;
  public void setTransmittingAllowed(boolean enable) {&lt;br /&gt;
    transmittingAllowed = enable;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean getTransmittingAllowed() {&lt;br /&gt;
    return transmittingAllowed;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTransmitter(StateTransmitter transmitter) {&lt;br /&gt;
    this.transmitter = transmitter;&lt;br /&gt;
  }&lt;br /&gt;
  public StateTransmitter getTransmitter() {&lt;br /&gt;
    return transmitter;&lt;br /&gt;
  }&lt;br /&gt;
  public void setEnabled(boolean enable) {&lt;br /&gt;
    super.setEnabled(enable);&lt;br /&gt;
    if (transmittingAllowed &amp;amp;&amp;amp; transmitter != null) {&lt;br /&gt;
      transmitter.setChildrenEnabled(enable);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface StateTransmitter {&lt;br /&gt;
  public void setChildrenEnabled(boolean enable);&lt;br /&gt;
}&lt;br /&gt;
class CompTitledBorder extends TitledBorder {&lt;br /&gt;
  protected JComponent component;&lt;br /&gt;
  public CompTitledBorder(JComponent component) {&lt;br /&gt;
    this(null, component, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border) {&lt;br /&gt;
    this(border, null, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border, JComponent component) {&lt;br /&gt;
    this(border, component, LEFT, TOP);&lt;br /&gt;
  }&lt;br /&gt;
  public CompTitledBorder(Border border, JComponent component,&lt;br /&gt;
      int titleJustification, int titlePosition) {&lt;br /&gt;
    super(border, null, titleJustification, titlePosition, null, null);&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
    if (border == null) {&lt;br /&gt;
      this.border = super.getBorder();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void paintBorder(Component c, Graphics g, int x, int y, int width,&lt;br /&gt;
      int height) {&lt;br /&gt;
    Rectangle borderR = new Rectangle(x + EDGE_SPACING, y + EDGE_SPACING,&lt;br /&gt;
        width - (EDGE_SPACING * 2), height - (EDGE_SPACING * 2));&lt;br /&gt;
    Insets borderInsets;&lt;br /&gt;
    if (border != null) {&lt;br /&gt;
      borderInsets = border.getBorderInsets(c);&lt;br /&gt;
    } else {&lt;br /&gt;
      borderInsets = new Insets(0, 0, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    Rectangle rect = new Rectangle(x, y, width, height);&lt;br /&gt;
    Insets insets = getBorderInsets(c);&lt;br /&gt;
    Rectangle compR = getComponentRect(rect, insets);&lt;br /&gt;
    int diff;&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      diff = compR.height + TEXT_SPACING;&lt;br /&gt;
      borderR.y += diff;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      diff = insets.top / 2 - borderInsets.top - EDGE_SPACING;&lt;br /&gt;
      borderR.y += diff;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      diff = insets.bottom / 2 - borderInsets.bottom - EDGE_SPACING;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      diff = compR.height + TEXT_SPACING;&lt;br /&gt;
      borderR.height -= diff;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    border.paintBorder(c, g, borderR.x, borderR.y, borderR.width,&lt;br /&gt;
        borderR.height);&lt;br /&gt;
    Color col = g.getColor();&lt;br /&gt;
    g.setColor(c.getBackground());&lt;br /&gt;
    g.fillRect(compR.x, compR.y, compR.width, compR.height);&lt;br /&gt;
    g.setColor(col);&lt;br /&gt;
    component.repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Insets getBorderInsets(Component c, Insets insets) {&lt;br /&gt;
    Insets borderInsets;&lt;br /&gt;
    if (border != null) {&lt;br /&gt;
      borderInsets = border.getBorderInsets(c);&lt;br /&gt;
    } else {&lt;br /&gt;
      borderInsets = new Insets(0, 0, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    insets.top = EDGE_SPACING + TEXT_SPACING + borderInsets.top;&lt;br /&gt;
    insets.right = EDGE_SPACING + TEXT_SPACING + borderInsets.right;&lt;br /&gt;
    insets.bottom = EDGE_SPACING + TEXT_SPACING + borderInsets.bottom;&lt;br /&gt;
    insets.left = EDGE_SPACING + TEXT_SPACING + borderInsets.left;&lt;br /&gt;
    if (c == null || component == null) {&lt;br /&gt;
      return insets;&lt;br /&gt;
    }&lt;br /&gt;
    int compHeight = 0;&lt;br /&gt;
    if (component != null) {&lt;br /&gt;
      compHeight = component.getPreferredSize().height;&lt;br /&gt;
    }&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      insets.top += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      insets.top += Math.max(compHeight, borderInsets.top)&lt;br /&gt;
          - borderInsets.top;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
      insets.top += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      insets.bottom += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      insets.bottom += Math.max(compHeight, borderInsets.bottom)&lt;br /&gt;
          - borderInsets.bottom;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      insets.bottom += compHeight + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return insets;&lt;br /&gt;
  }&lt;br /&gt;
  public JComponent getTitleComponent() {&lt;br /&gt;
    return component;&lt;br /&gt;
  }&lt;br /&gt;
  public void setTitleComponent(JComponent component) {&lt;br /&gt;
    this.ruponent = component;&lt;br /&gt;
  }&lt;br /&gt;
  public Rectangle getComponentRect(Rectangle rect, Insets borderInsets) {&lt;br /&gt;
    Dimension compD = component.getPreferredSize();&lt;br /&gt;
    Rectangle compR = new Rectangle(0, 0, compD.width, compD.height);&lt;br /&gt;
    switch (titlePosition) {&lt;br /&gt;
    case ABOVE_TOP:&lt;br /&gt;
      compR.y = EDGE_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case TOP:&lt;br /&gt;
    case DEFAULT_POSITION:&lt;br /&gt;
      compR.y = EDGE_SPACING&lt;br /&gt;
          + (borderInsets.top - EDGE_SPACING - TEXT_SPACING - compD.height)&lt;br /&gt;
          / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_TOP:&lt;br /&gt;
      compR.y = borderInsets.top - compD.height - TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case ABOVE_BOTTOM:&lt;br /&gt;
      compR.y = rect.height - borderInsets.bottom + TEXT_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    case BOTTOM:&lt;br /&gt;
      compR.y = rect.height&lt;br /&gt;
          - borderInsets.bottom&lt;br /&gt;
          + TEXT_SPACING&lt;br /&gt;
          + (borderInsets.bottom - EDGE_SPACING - TEXT_SPACING - compD.height)&lt;br /&gt;
          / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    case BELOW_BOTTOM:&lt;br /&gt;
      compR.y = rect.height - compD.height - EDGE_SPACING;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    switch (titleJustification) {&lt;br /&gt;
    case LEFT:&lt;br /&gt;
    case DEFAULT_JUSTIFICATION:&lt;br /&gt;
      compR.x = TEXT_INSET_H + borderInsets.left;&lt;br /&gt;
      break;&lt;br /&gt;
    case RIGHT:&lt;br /&gt;
      compR.x = rect.width - borderInsets.right - TEXT_INSET_H&lt;br /&gt;
          - compR.width;&lt;br /&gt;
      break;&lt;br /&gt;
    case CENTER:&lt;br /&gt;
      compR.x = (rect.width - compR.width) / 2;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return compR;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DropDown Shadow Border ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for Button ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for ComboBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for Image ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for Label ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for List ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for Panel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for TextArea ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shadows for TextField ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swing transparent component ==&lt;/div&gt;</summary>
			</entry>

	</feed>