<?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%2FLink_Button</id>
		<title>Java/Swing Components/Link Button - История изменений</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%2FLink_Button"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_Components/Link_Button&amp;action=history"/>
		<updated>2026-04-23T10:43:12Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_Components/Link_Button&amp;diff=8229&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/Link_Button&amp;diff=8229&amp;oldid=prev"/>
				<updated>2010-06-01T06:56:43Z</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/Link_Button&amp;diff=8228&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/Link_Button&amp;diff=8228&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;== Another Link 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;
  &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;
/**&lt;br /&gt;
 * $ $ License.&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright $ L2FProd.ru&lt;br /&gt;
 *&lt;br /&gt;
 * Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 * you may not use this file except in compliance with the License.&lt;br /&gt;
 * You may obtain a copy of the License at&lt;br /&gt;
 *&lt;br /&gt;
 *     http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 *&lt;br /&gt;
 * Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 * See the License for the specific language governing permissions and&lt;br /&gt;
 * limitations under the License.&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.AlphaComposite;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruposite;&lt;br /&gt;
import java.awt.Cursor;&lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.FontMetrics;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.event.MouseAdapter;&lt;br /&gt;
import java.awt.event.MouseEvent;&lt;br /&gt;
import java.awt.event.MouseListener;&lt;br /&gt;
import javax.swing.AbstractButton;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.ButtonModel;&lt;br /&gt;
import javax.swing.Icon;&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.JToolBar;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.plaf.ruponentUI;&lt;br /&gt;
import javax.swing.plaf.basic.BasicButtonUI;&lt;br /&gt;
import javax.swing.plaf.basic.BasicGraphicsUtils;&lt;br /&gt;
import javax.swing.plaf.basic.BasicHTML;&lt;br /&gt;
import javax.swing.text.View;&lt;br /&gt;
/**&lt;br /&gt;
 * A button targeted to be used as an hyperlink. Most UI will make it&lt;br /&gt;
 * transparent and it will react on mouse over by changing the cursor to the&lt;br /&gt;
 * hand cursor.&lt;br /&gt;
 * &lt;br /&gt;
 * @javabean.class name=&amp;quot;JLinkButton&amp;quot; shortDescription=&amp;quot;A button looking as an&lt;br /&gt;
 *                 hyperlink.&amp;quot; stopClass=&amp;quot;java.awt.ruponent&amp;quot;&lt;br /&gt;
 * &lt;br /&gt;
 * @javabean.attribute name=&amp;quot;isContainer&amp;quot; value=&amp;quot;Boolean.FALSE&amp;quot; rtexpr=&amp;quot;true&amp;quot;&lt;br /&gt;
 * &lt;br /&gt;
 * @javabean.icons mono16=&amp;quot;JLinkButton16-mono.gif&amp;quot; color16=&amp;quot;JLinkButton16.gif&amp;quot;&lt;br /&gt;
 *                 mono32=&amp;quot;JLinkButton32-mono.gif&amp;quot; color32=&amp;quot;JLinkButton32.gif&amp;quot;&lt;br /&gt;
 */&lt;br /&gt;
public class AnotherLinkButton extends JButton {&lt;br /&gt;
  public AnotherLinkButton() {&lt;br /&gt;
    super();&lt;br /&gt;
  }&lt;br /&gt;
  public AnotherLinkButton(String text) {&lt;br /&gt;
    super(text);&lt;br /&gt;
  }&lt;br /&gt;
  public AnotherLinkButton(String text, Icon icon) {&lt;br /&gt;
    super(text, icon);&lt;br /&gt;
  }&lt;br /&gt;
  public AnotherLinkButton(Action a) {&lt;br /&gt;
    super(a);&lt;br /&gt;
  }&lt;br /&gt;
  public AnotherLinkButton(Icon icon) {&lt;br /&gt;
    super(icon);&lt;br /&gt;
  }&lt;br /&gt;
  public void updateUI() {&lt;br /&gt;
    setUI(new WindowsLinkButtonUI());&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;JLinkButton&amp;quot;);&lt;br /&gt;
    frame.getContentPane().setLayout(new BorderLayout());&lt;br /&gt;
    frame.getContentPane().add(&amp;quot;Center&amp;quot;, new AnotherLinkButton(&amp;quot;www.jexp.ru&amp;quot;));&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setLocation(100, 100);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class BasicLinkButtonUI extends BasicButtonUI {&lt;br /&gt;
  public static ComponentUI createUI(JComponent c) {&lt;br /&gt;
    return new BasicLinkButtonUI();&lt;br /&gt;
  }&lt;br /&gt;
  private static Rectangle viewRect = new Rectangle();&lt;br /&gt;
  private static Rectangle textRect = new Rectangle();&lt;br /&gt;
  private static Rectangle iconRect = new Rectangle();&lt;br /&gt;
  private static MouseListener handCursorListener = new HandCursor();&lt;br /&gt;
  protected int dashedRectGapX;&lt;br /&gt;
  protected int dashedRectGapY;&lt;br /&gt;
  protected int dashedRectGapWidth;&lt;br /&gt;
  protected int dashedRectGapHeight;&lt;br /&gt;
  private Color focusColor;&lt;br /&gt;
  protected void installDefaults(AbstractButton b) {&lt;br /&gt;
    super.installDefaults(b);&lt;br /&gt;
    b.setOpaque(false);&lt;br /&gt;
    b.setBorderPainted(false);&lt;br /&gt;
    b.setRolloverEnabled(true);&lt;br /&gt;
    dashedRectGapX = UIManager.getInt(&amp;quot;ButtonUI.dashedRectGapX&amp;quot;);&lt;br /&gt;
    dashedRectGapY = UIManager.getInt(&amp;quot;ButtonUI.dashedRectGapY&amp;quot;);&lt;br /&gt;
    dashedRectGapWidth = UIManager.getInt(&amp;quot;ButtonUI.dashedRectGapWidth&amp;quot;);&lt;br /&gt;
    dashedRectGapHeight = UIManager.getInt(&amp;quot;ButtonUI.dashedRectGapHeight&amp;quot;);&lt;br /&gt;
    focusColor = UIManager.getColor(&amp;quot;ButtonUI.focus&amp;quot;);&lt;br /&gt;
    b.setHorizontalAlignment(AbstractButton.LEFT);&lt;br /&gt;
  }&lt;br /&gt;
  protected void installListeners(AbstractButton b) {&lt;br /&gt;
    super.installListeners(b);&lt;br /&gt;
    b.addMouseListener(handCursorListener);&lt;br /&gt;
  }&lt;br /&gt;
  protected void uninstallListeners(AbstractButton b) {&lt;br /&gt;
    super.uninstallListeners(b);&lt;br /&gt;
    b.removeMouseListener(handCursorListener);&lt;br /&gt;
  }&lt;br /&gt;
  protected Color getFocusColor() {&lt;br /&gt;
    return focusColor;&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g, JComponent c) {&lt;br /&gt;
    AbstractButton b = (AbstractButton) c;&lt;br /&gt;
    ButtonModel model = b.getModel();&lt;br /&gt;
    FontMetrics fm = g.getFontMetrics();&lt;br /&gt;
    Insets i = c.getInsets();&lt;br /&gt;
    viewRect.x = i.left;&lt;br /&gt;
    viewRect.y = i.top;&lt;br /&gt;
    viewRect.width = b.getWidth() - (i.right + viewRect.x);&lt;br /&gt;
    viewRect.height = b.getHeight() - (i.bottom + viewRect.y);&lt;br /&gt;
    textRect.x = textRect.y = textRect.width = textRect.height = 0;&lt;br /&gt;
    iconRect.x = iconRect.y = iconRect.width = iconRect.height = 0;&lt;br /&gt;
    Font f = c.getFont();&lt;br /&gt;
    g.setFont(f);&lt;br /&gt;
    // layout the text and icon&lt;br /&gt;
    String text = SwingUtilities.layoutCompoundLabel(c, fm, b.getText(), b&lt;br /&gt;
        .getIcon(), b.getVerticalAlignment(), b&lt;br /&gt;
        .getHorizontalAlignment(), b.getVerticalTextPosition(), b&lt;br /&gt;
        .getHorizontalTextPosition(), viewRect, iconRect, textRect, b&lt;br /&gt;
        .getText() == null ? 0 : b.getIconTextGap());&lt;br /&gt;
    clearTextShiftOffset();&lt;br /&gt;
    // perform UI specific press action, e.g. Windows L&amp;amp;F shifts text&lt;br /&gt;
    if (model.isArmed() &amp;amp;&amp;amp; model.isPressed()) {&lt;br /&gt;
      paintButtonPressed(g, b);&lt;br /&gt;
    }&lt;br /&gt;
    // Paint the Icon&lt;br /&gt;
    if (b.getIcon() != null) {&lt;br /&gt;
      paintIcon(g, c, iconRect);&lt;br /&gt;
    }&lt;br /&gt;
    Composite oldComposite = ((Graphics2D) g).getComposite();&lt;br /&gt;
    if (model.isRollover()) {&lt;br /&gt;
      ((Graphics2D) g).setComposite(AlphaComposite.getInstance(&lt;br /&gt;
          AlphaComposite.SRC_OVER, 0.5f));&lt;br /&gt;
    }&lt;br /&gt;
    if (text != null &amp;amp;&amp;amp; !text.equals(&amp;quot;&amp;quot;)) {&lt;br /&gt;
      View v = (View) c.getClientProperty(BasicHTML.propertyKey);&lt;br /&gt;
      if (v != null) {&lt;br /&gt;
        textRect.x += getTextShiftOffset();&lt;br /&gt;
        textRect.y += getTextShiftOffset();&lt;br /&gt;
        v.paint(g, textRect);&lt;br /&gt;
        textRect.x -= getTextShiftOffset();&lt;br /&gt;
        textRect.y -= getTextShiftOffset();&lt;br /&gt;
      } else {&lt;br /&gt;
        paintText(g, b, textRect, text);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (b.isFocusPainted() &amp;amp;&amp;amp; b.hasFocus()) {&lt;br /&gt;
      // paint UI specific focus&lt;br /&gt;
      paintFocus(g, b, viewRect, textRect, iconRect);&lt;br /&gt;
    }&lt;br /&gt;
    ((Graphics2D) g).setComposite(oldComposite);&lt;br /&gt;
  }&lt;br /&gt;
  protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect,&lt;br /&gt;
      Rectangle textRect, Rectangle iconRect) {&lt;br /&gt;
    if (b.getParent() instanceof JToolBar) {&lt;br /&gt;
      // Windows doesn&amp;quot;t draw the focus rect for buttons in a toolbar.&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    // focus painted same color as text&lt;br /&gt;
    int width = b.getWidth();&lt;br /&gt;
    int height = b.getHeight();&lt;br /&gt;
    g.setColor(getFocusColor());&lt;br /&gt;
    BasicGraphicsUtils.drawDashedRect(g, dashedRectGapX, dashedRectGapY,&lt;br /&gt;
        width - dashedRectGapWidth, height - dashedRectGapHeight);&lt;br /&gt;
  }&lt;br /&gt;
  protected void paintButtonPressed(Graphics g, AbstractButton b) {&lt;br /&gt;
    setTextShiftOffset();&lt;br /&gt;
  }&lt;br /&gt;
  static class HandCursor extends MouseAdapter {&lt;br /&gt;
    public void mouseEntered(MouseEvent e) {&lt;br /&gt;
      e.getComponent().setCursor(&lt;br /&gt;
          Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));&lt;br /&gt;
    }&lt;br /&gt;
    public void mouseExited(MouseEvent e) {&lt;br /&gt;
      e.getComponent().setCursor(Cursor.getDefaultCursor());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class WindowsLinkButtonUI extends BasicLinkButtonUI {&lt;br /&gt;
  private static WindowsLinkButtonUI buttonUI = new WindowsLinkButtonUI();&lt;br /&gt;
  public static ComponentUI createUI(JComponent c) {&lt;br /&gt;
    return buttonUI;&lt;br /&gt;
  }&lt;br /&gt;
  protected void paintButtonPressed(Graphics g, AbstractButton b) {&lt;br /&gt;
    setTextShiftOffset();&lt;br /&gt;
  }&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;
== Hyper Link 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;
&lt;br /&gt;
== HyperLink in Table ==&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;
== LinkButton ==&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;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Cursor;&lt;br /&gt;
import java.awt.FontMetrics;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.ButtonModel;&lt;br /&gt;
import javax.swing.Icon;&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.UIManager;&lt;br /&gt;
import javax.swing.plaf.ruponentUI;&lt;br /&gt;
import javax.swing.plaf.metal.MetalButtonUI;&lt;br /&gt;
public class JLinkButton extends JButton {&lt;br /&gt;
  private static final String uiString = &amp;quot;LinkButtonUI&amp;quot;;&lt;br /&gt;
  public static final int ALWAYS_UNDERLINE = 0;&lt;br /&gt;
  public static final int HOVER_UNDERLINE = 1;&lt;br /&gt;
  public static final int NEVER_UNDERLINE = 2;&lt;br /&gt;
  public static final int SYSTEM_DEFAULT = 3;&lt;br /&gt;
  private int linkBehavior;&lt;br /&gt;
  private Color linkColor;&lt;br /&gt;
  private Color colorPressed;&lt;br /&gt;
  private Color visitedLinkColor;&lt;br /&gt;
  private Color disabledLinkColor;&lt;br /&gt;
  private URL buttonURL;&lt;br /&gt;
  private Action defaultAction;&lt;br /&gt;
  private boolean isLinkVisited;&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.getContentPane().setLayout(new GridLayout(0,2));&lt;br /&gt;
    f.getContentPane().add(new JLinkButton(&amp;quot;www.jexp.ru&amp;quot;));&lt;br /&gt;
    f.getContentPane().add(new JLinkButton(&amp;quot;www.jexp.ru/ExampleCode/CatalogExampleCode.htm&amp;quot;));&lt;br /&gt;
    f.setSize(600, 200);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton() {&lt;br /&gt;
    this(null, null, null);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(Action action) {&lt;br /&gt;
    this();&lt;br /&gt;
    setAction(action);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(Icon icon) {&lt;br /&gt;
    this(null, icon, null);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(String s) {&lt;br /&gt;
    this(s, null, null);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(URL url) {&lt;br /&gt;
    this(null, null, url);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(String s, URL url) {&lt;br /&gt;
    this(s, null, url);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(Icon icon, URL url) {&lt;br /&gt;
    this(null, icon, url);&lt;br /&gt;
  }&lt;br /&gt;
  public JLinkButton(String text, Icon icon, URL url) {&lt;br /&gt;
    super(text, icon);&lt;br /&gt;
    linkBehavior = SYSTEM_DEFAULT;&lt;br /&gt;
    linkColor = Color.blue;&lt;br /&gt;
    colorPressed = Color.red;&lt;br /&gt;
    visitedLinkColor = new Color(128, 0, 128);&lt;br /&gt;
    if (text == null &amp;amp;&amp;amp; url != null)&lt;br /&gt;
      setText(url.toExternalForm());&lt;br /&gt;
    setLinkURL(url);&lt;br /&gt;
    setCursor(Cursor.getPredefinedCursor(12));&lt;br /&gt;
    setBorderPainted(false);&lt;br /&gt;
    setContentAreaFilled(false);&lt;br /&gt;
    setRolloverEnabled(true);&lt;br /&gt;
    addActionListener(defaultAction);&lt;br /&gt;
  }&lt;br /&gt;
  public void updateUI() {&lt;br /&gt;
    setUI(BasicLinkButtonUI.createUI(this));&lt;br /&gt;
  }&lt;br /&gt;
  private void setDefault() {&lt;br /&gt;
    UIManager.getDefaults().put(&amp;quot;LinkButtonUI&amp;quot;, &amp;quot;BasicLinkButtonUI&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public String getUIClassID() {&lt;br /&gt;
    return &amp;quot;LinkButtonUI&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  protected void setupToolTipText() {&lt;br /&gt;
    String tip = null;&lt;br /&gt;
    if (buttonURL != null)&lt;br /&gt;
      tip = buttonURL.toExternalForm();&lt;br /&gt;
    setToolTipText(tip);&lt;br /&gt;
  }&lt;br /&gt;
  public void setLinkBehavior(int bnew) {&lt;br /&gt;
    checkLinkBehaviour(bnew);&lt;br /&gt;
    int old = linkBehavior;&lt;br /&gt;
    linkBehavior = bnew;&lt;br /&gt;
    firePropertyChange(&amp;quot;linkBehavior&amp;quot;, old, bnew);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  private void checkLinkBehaviour(int beha) {&lt;br /&gt;
    if (beha != ALWAYS_UNDERLINE &amp;amp;&amp;amp; beha != HOVER_UNDERLINE&lt;br /&gt;
        &amp;amp;&amp;amp; beha != NEVER_UNDERLINE &amp;amp;&amp;amp; beha != SYSTEM_DEFAULT)&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;Not a legal LinkBehavior&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      return;&lt;br /&gt;
  }&lt;br /&gt;
  public int getLinkBehavior() {&lt;br /&gt;
    return linkBehavior;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLinkColor(Color color) {&lt;br /&gt;
    Color colorOld = linkColor;&lt;br /&gt;
    linkColor = color;&lt;br /&gt;
    firePropertyChange(&amp;quot;linkColor&amp;quot;, colorOld, color);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Color getLinkColor() {&lt;br /&gt;
    return linkColor;&lt;br /&gt;
  }&lt;br /&gt;
  public void setActiveLinkColor(Color colorNew) {&lt;br /&gt;
    Color colorOld = colorPressed;&lt;br /&gt;
    colorPressed = colorNew;&lt;br /&gt;
    firePropertyChange(&amp;quot;activeLinkColor&amp;quot;, colorOld, colorNew);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Color getActiveLinkColor() {&lt;br /&gt;
    return colorPressed;&lt;br /&gt;
  }&lt;br /&gt;
  public void setDisabledLinkColor(Color color) {&lt;br /&gt;
    Color colorOld = disabledLinkColor;&lt;br /&gt;
    disabledLinkColor = color;&lt;br /&gt;
    firePropertyChange(&amp;quot;disabledLinkColor&amp;quot;, colorOld, color);&lt;br /&gt;
    if (!isEnabled())&lt;br /&gt;
      repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Color getDisabledLinkColor() {&lt;br /&gt;
    return disabledLinkColor;&lt;br /&gt;
  }&lt;br /&gt;
  public void setVisitedLinkColor(Color colorNew) {&lt;br /&gt;
    Color colorOld = visitedLinkColor;&lt;br /&gt;
    visitedLinkColor = colorNew;&lt;br /&gt;
    firePropertyChange(&amp;quot;visitedLinkColor&amp;quot;, colorOld, colorNew);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public Color getVisitedLinkColor() {&lt;br /&gt;
    return visitedLinkColor;&lt;br /&gt;
  }&lt;br /&gt;
  public URL getLinkURL() {&lt;br /&gt;
    return buttonURL;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLinkURL(URL url) {&lt;br /&gt;
    URL urlOld = buttonURL;&lt;br /&gt;
    buttonURL = url;&lt;br /&gt;
    setupToolTipText();&lt;br /&gt;
    firePropertyChange(&amp;quot;linkURL&amp;quot;, urlOld, url);&lt;br /&gt;
    revalidate();&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public void setLinkVisited(boolean flagNew) {&lt;br /&gt;
    boolean flagOld = isLinkVisited;&lt;br /&gt;
    isLinkVisited = flagNew;&lt;br /&gt;
    firePropertyChange(&amp;quot;linkVisited&amp;quot;, flagOld, flagNew);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isLinkVisited() {&lt;br /&gt;
    return isLinkVisited;&lt;br /&gt;
  }&lt;br /&gt;
  public void setDefaultAction(Action actionNew) {&lt;br /&gt;
    Action actionOld = defaultAction;&lt;br /&gt;
    defaultAction = actionNew;&lt;br /&gt;
    firePropertyChange(&amp;quot;defaultAction&amp;quot;, actionOld, actionNew);&lt;br /&gt;
  }&lt;br /&gt;
  public Action getDefaultAction() {&lt;br /&gt;
    return defaultAction;&lt;br /&gt;
  }&lt;br /&gt;
  protected String paramString() {&lt;br /&gt;
    String str;&lt;br /&gt;
    if (linkBehavior == ALWAYS_UNDERLINE)&lt;br /&gt;
      str = &amp;quot;ALWAYS_UNDERLINE&amp;quot;;&lt;br /&gt;
    else if (linkBehavior == HOVER_UNDERLINE)&lt;br /&gt;
      str = &amp;quot;HOVER_UNDERLINE&amp;quot;;&lt;br /&gt;
    else if (linkBehavior == NEVER_UNDERLINE)&lt;br /&gt;
      str = &amp;quot;NEVER_UNDERLINE&amp;quot;;&lt;br /&gt;
    else&lt;br /&gt;
      str = &amp;quot;SYSTEM_DEFAULT&amp;quot;;&lt;br /&gt;
    String colorStr = linkColor == null ? &amp;quot;&amp;quot; : linkColor.toString();&lt;br /&gt;
    String colorPressStr = colorPressed == null ? &amp;quot;&amp;quot; : colorPressed&lt;br /&gt;
        .toString();&lt;br /&gt;
    String disabledLinkColorStr = disabledLinkColor == null ? &amp;quot;&amp;quot;&lt;br /&gt;
        : disabledLinkColor.toString();&lt;br /&gt;
    String visitedLinkColorStr = visitedLinkColor == null ? &amp;quot;&amp;quot;&lt;br /&gt;
        : visitedLinkColor.toString();&lt;br /&gt;
    String buttonURLStr = buttonURL == null ? &amp;quot;&amp;quot; : buttonURL.toString();&lt;br /&gt;
    String isLinkVisitedStr = isLinkVisited ? &amp;quot;true&amp;quot; : &amp;quot;false&amp;quot;;&lt;br /&gt;
    return super.paramString() + &amp;quot;,linkBehavior=&amp;quot; + str + &amp;quot;,linkURL=&amp;quot;&lt;br /&gt;
        + buttonURLStr + &amp;quot;,linkColor=&amp;quot; + colorStr + &amp;quot;,activeLinkColor=&amp;quot;&lt;br /&gt;
        + colorPressStr + &amp;quot;,disabledLinkColor=&amp;quot; + disabledLinkColorStr&lt;br /&gt;
        + &amp;quot;,visitedLinkColor=&amp;quot; + visitedLinkColorStr&lt;br /&gt;
        + &amp;quot;,linkvisitedString=&amp;quot; + isLinkVisitedStr;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class BasicLinkButtonUI extends MetalButtonUI {&lt;br /&gt;
  private static final BasicLinkButtonUI ui = new BasicLinkButtonUI();&lt;br /&gt;
  public BasicLinkButtonUI() {&lt;br /&gt;
  }&lt;br /&gt;
  public static ComponentUI createUI(JComponent jcomponent) {&lt;br /&gt;
    return ui;&lt;br /&gt;
  }&lt;br /&gt;
  protected void paintText(Graphics g, JComponent com, Rectangle rect,&lt;br /&gt;
      String s) {&lt;br /&gt;
    JLinkButton bn = (JLinkButton) com;&lt;br /&gt;
    ButtonModel bnModel = bn.getModel();&lt;br /&gt;
    Color color = bn.getForeground();&lt;br /&gt;
    Object obj = null;&lt;br /&gt;
    if (bnModel.isEnabled()) {&lt;br /&gt;
      if (bnModel.isPressed())&lt;br /&gt;
        bn.setForeground(bn.getActiveLinkColor());&lt;br /&gt;
      else if (bn.isLinkVisited())&lt;br /&gt;
        bn.setForeground(bn.getVisitedLinkColor());&lt;br /&gt;
      else&lt;br /&gt;
        bn.setForeground(bn.getLinkColor());&lt;br /&gt;
    } else {&lt;br /&gt;
      if (bn.getDisabledLinkColor() != null)&lt;br /&gt;
        bn.setForeground(bn.getDisabledLinkColor());&lt;br /&gt;
    }&lt;br /&gt;
    super.paintText(g, com, rect, s);&lt;br /&gt;
    int behaviour = bn.getLinkBehavior();&lt;br /&gt;
    boolean drawLine = false;&lt;br /&gt;
    if (behaviour == JLinkButton.HOVER_UNDERLINE) {&lt;br /&gt;
      if (bnModel.isRollover())&lt;br /&gt;
        drawLine = true;&lt;br /&gt;
    } else if (behaviour == JLinkButton.ALWAYS_UNDERLINE || behaviour == JLinkButton.SYSTEM_DEFAULT)&lt;br /&gt;
      drawLine = true;&lt;br /&gt;
    if (!drawLine)&lt;br /&gt;
      return;&lt;br /&gt;
    FontMetrics fm = g.getFontMetrics();&lt;br /&gt;
    int x = rect.x + getTextShiftOffset();&lt;br /&gt;
    int y = (rect.y + fm.getAscent() + fm.getDescent() + getTextShiftOffset()) - 1;&lt;br /&gt;
    if (bnModel.isEnabled()) {&lt;br /&gt;
      g.setColor(bn.getForeground());&lt;br /&gt;
      g.drawLine(x, y, (x + rect.width) - 1, y);&lt;br /&gt;
    } else {&lt;br /&gt;
      g.setColor(bn.getBackground().brighter());&lt;br /&gt;
      g.drawLine(x, y, (x + rect.width) - 1, y);&lt;br /&gt;
    }&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;/div&gt;</summary>
			</entry>

	</feed>