Avatar billede p_gaard Juniormester
01. marts 2007 - 16:01 Der er 1 kommentar og
1 løsning

Runde hjørner på JPanel (se venligst bort fra forrige)

Hej,

Er der en som kan forklare hvorledes jeg kan implementere følgende kode i mine apletter, således at jeg kan anvende den på diverse panes og evt knapper. Jeg vil gerne bevare koden i sin egen klasse adskilt fra mine egne.


Jeg har forsøgt i en applet at på et jpane at skrive:

pane.setBorder(new OvalBorder(10,10))

må konkludere at et OvalBorder object klassen ikke umiddelbart kan passes ind i et JPane. øv....

Jeg synes OvalBorder eksemplets kant er smuk.




-----------------------------------------------------------------





import java.awt.*;

import javax.swing.*;
import javax.swing.border.*;

public class OvalBorder implements Border
{
  protected int m_w=6;
  protected int m_h=6;
  protected Color m_topColor = Color.white;
  protected Color m_bottomColor = Color.gray;
  JFrame frame;

  public OvalBorder() {
    m_w=6;
    m_h=6;
  }

  public OvalBorder(int w, int h) {
    m_w=w;
    m_h=h;
  }

  public OvalBorder(int w, int h, Color topColor,
  Color bottomColor) {
    m_w=w;
    m_h=h;
    m_topColor = topColor;
    m_bottomColor = bottomColor;
  }

  public Insets getBorderInsets(Component c) {
    return new Insets(m_h, m_w, m_h, m_w);
  }

  public boolean isBorderOpaque() { return true; }

  public void paintBorder(Component c, Graphics g,
  int x, int y, int w, int h) {
    w--;
    h--;
    g.setColor(m_topColor);
    g.drawLine(x, y+h-m_h, x, y+m_h);
    g.drawArc(x, y, 2*m_w, 2*m_h, 180, -90);
    g.drawLine(x+m_w, y, x+w-m_w, y);
    g.drawArc(x+w-2*m_w, y, 2*m_w, 2*m_h, 90, -90);

    g.setColor(m_bottomColor);
    g.drawLine(x+w, y+m_h, x+w, y+h-m_h);
    g.drawArc(x+w-2*m_w, y+h-2*m_h, 2*m_w, 2*m_h, 0, -90);
    g.drawLine(x+m_w, y+h, x+w-m_w, y+h);
    g.drawArc(x, y+h-2*m_h, 2*m_w, 2*m_h, -90, -90);
  }
 


  public static void main(String[] args) {
    JFrame frame = new JFrame("Custom Border: OvalBorder");
    JLabel label = new JLabel("OvalBorder");
    ((JPanel) frame.getContentPane()).setBorder(new CompoundBorder(
      new EmptyBorder(10,10,10,10), new OvalBorder(10,10)));
    frame.getContentPane().add(label);
    frame.setBounds(0,0,300,150);
    frame.setVisible(true);
  }
}
Avatar billede p_gaard Juniormester
01. marts 2007 - 17:48 #1
Jeg har løst problemet. Den viste sig alligevel at fungere med JPane.setBorder
Avatar billede p_gaard Juniormester
19. marts 2007 - 13:18 #2
Nu skal jeg acceptere
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester