<?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_Tutorial%2FSwing%2FCustom_Border</id>
		<title>Java Tutorial/Swing/Custom Border - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FCustom_Border"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/Custom_Border&amp;action=history"/>
		<updated>2026-04-21T20:33:25Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/Custom_Border&amp;diff=4039&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/Custom_Border&amp;diff=4039&amp;oldid=prev"/>
				<updated>2010-06-01T04:57: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;Версия 04:57, 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_Tutorial/Swing/Custom_Border&amp;diff=4038&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/Custom_Border&amp;diff=4038&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</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;== 14. Creating a Compound 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;
  &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;
import java.awt.Color;&lt;br /&gt;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
import javax.swing.border.LineBorder;&lt;br /&gt;
import javax.swing.border.TitledBorder;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    LineBorder border1 = new LineBorder(Color.red);&lt;br /&gt;
    TitledBorder border2 = new TitledBorder(&amp;quot;asdf&amp;quot;);&lt;br /&gt;
    Border newBorder = BorderFactory.createCompoundBorder(border1, border2);&lt;br /&gt;
    JButton component = new JButton(&amp;quot;button&amp;quot;);&lt;br /&gt;
    component.setBorder(newBorder);&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;
== 14. Creating and Setting a Lowered BevelBorder from BorderFactory ==&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;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.border.BevelBorder;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    BevelBorder loweredBevelBorder = (BevelBorder)BorderFactory.createLoweredBevelBorder();&lt;br /&gt;
    JLabel component = new JLabel(&amp;quot;label&amp;quot;);&lt;br /&gt;
    component.setBorder(loweredBevelBorder);&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;
== 14. Creating and Setting a Raised BevelBorder from BorderFactory ==&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;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.border.BevelBorder;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    &lt;br /&gt;
    BevelBorder raisedBevelBorder = (BevelBorder)BorderFactory.createRaisedBevelBorder();&lt;br /&gt;
    JLabel component = new JLabel(&amp;quot;label&amp;quot;);&lt;br /&gt;
    component.setBorder(raisedBevelBorder);&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;
== 14. Creating Your Own Borders ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;implements the Border interface&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;extend the AbstractBorder class&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;AbstractBorder class is the better, since certain Swing classes has optimizations for the AbstractBorder-specific methods.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 14. implements Border interface ==&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;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
class SimpleBorder implements Border {  &lt;br /&gt;
  int top;  &lt;br /&gt;
  int left;   &lt;br /&gt;
  int bottom;   &lt;br /&gt;
  int right;  &lt;br /&gt;
  Color color = null;   &lt;br /&gt;
  public SimpleBorder() {  &lt;br /&gt;
      this.top = 2;   &lt;br /&gt;
      this.left = 4;   &lt;br /&gt;
      this.bottom = 8;   &lt;br /&gt;
      this.right = 10;   &lt;br /&gt;
      this.color = Color.RED;   &lt;br /&gt;
  }   &lt;br /&gt;
  public void paintBorder(Component c, &lt;br /&gt;
                          Graphics g,  &lt;br /&gt;
                          int x, int y,&lt;br /&gt;
                          int width, int height) {&lt;br /&gt;
&lt;br /&gt;
      Insets insets = getBorderInsets(c);   &lt;br /&gt;
      if (color != null)  &lt;br /&gt;
          g.setColor(color);  &lt;br /&gt;
&lt;br /&gt;
      g.fill3DRect(0, &lt;br /&gt;
                   0, &lt;br /&gt;
                   width-insets.right, &lt;br /&gt;
                   insets.top, &lt;br /&gt;
                   true); &lt;br /&gt;
      g.fill3DRect(0, insets.top, insets.left,  &lt;br /&gt;
                      height-insets.top, true);   &lt;br /&gt;
      g.fill3DRect(insets.left, height-insets.bottom,   &lt;br /&gt;
                   width-insets.left, insets.bottom, true);   &lt;br /&gt;
      g.fill3DRect(width-insets.right, 0, insets.right,   &lt;br /&gt;
                   height-insets.bottom, true);   &lt;br /&gt;
  }   &lt;br /&gt;
  public Insets getBorderInsets(Component c) {  &lt;br /&gt;
      return new Insets(top, left, bottom, right);  &lt;br /&gt;
  }   &lt;br /&gt;
  public boolean isBorderOpaque() {   &lt;br /&gt;
      return true;  &lt;br /&gt;
  }   &lt;br /&gt;
}&lt;br /&gt;
public class CustomBorderDemo {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JButton button = new JButton(&amp;quot;Aaaaaaaaaaa&amp;quot;);&lt;br /&gt;
    button.setBorder(new SimpleBorder());&lt;br /&gt;
    frame.add(button);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&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;
== 14. Subclass AbstractBorder ==&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;
import java.awt.BorderLayout;&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.Graphics;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.AbstractButton;&lt;br /&gt;
import javax.swing.ButtonModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.border.AbstractBorder;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
public class RedGreenBorder extends AbstractBorder {&lt;br /&gt;
  public boolean isBorderOpaque() {&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public Insets getBorderInsets(Component c) {&lt;br /&gt;
    return new Insets(3, 3, 3, 3);&lt;br /&gt;
  }&lt;br /&gt;
  public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {&lt;br /&gt;
    Insets insets = getBorderInsets(c);&lt;br /&gt;
    Color horizontalColor;&lt;br /&gt;
    if (c.isEnabled()) {&lt;br /&gt;
      boolean pressed = false;&lt;br /&gt;
      if (c instanceof AbstractButton) {&lt;br /&gt;
        ButtonModel model = ((AbstractButton) c).getModel();&lt;br /&gt;
        pressed = model.isPressed();&lt;br /&gt;
      }&lt;br /&gt;
      if (pressed) {&lt;br /&gt;
        horizontalColor = Color.RED;&lt;br /&gt;
      } else {&lt;br /&gt;
        horizontalColor = Color.GREEN;&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      horizontalColor = Color.LIGHT_GRAY;&lt;br /&gt;
    }&lt;br /&gt;
    g.setColor(horizontalColor);&lt;br /&gt;
    g.fillRect(0, 0, width, insets.top);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;My Border&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    Border border = new RedGreenBorder();&lt;br /&gt;
    JButton helloButton = new JButton(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
    helloButton.setBorder(border);&lt;br /&gt;
    JButton braveButton = new JButton(&amp;quot;Brave New&amp;quot;);&lt;br /&gt;
    braveButton.setBorder(border);&lt;br /&gt;
    braveButton.setEnabled(false);&lt;br /&gt;
    JButton worldButton = new JButton(&amp;quot;World&amp;quot;);&lt;br /&gt;
    worldButton.setBorder(border);&lt;br /&gt;
    Container contentPane = frame.getContentPane();&lt;br /&gt;
    contentPane.add(helloButton, BorderLayout.NORTH);&lt;br /&gt;
    contentPane.add(braveButton, BorderLayout.CENTER);&lt;br /&gt;
    contentPane.add(worldButton, BorderLayout.SOUTH);&lt;br /&gt;
    frame.setSize(300, 100);&lt;br /&gt;
    frame.setVisible(true);&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>