我想定制JLabel的边框,让其显示为菱形<>,请问如何实现?

解决方案 »

  1.   

    jLabel1.setBorder(BorderFactory.createLineBorder(Color.red));
     label.setBorder(BorderFactory.createLineBorder(Color.****));   
      

  2.   

    > jLabel1.setBorder(BorderFactory.createLineBorder(Color.red));
    > label.setBorder(BorderFactory.createLineBorder(Color.****));
    我的要求可没这么简单。
      

  3.   

    估计要自己在label上手绘了……
      

  4.   


    package test;import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Graphics;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;public class TestJLable extends JFrame {
    private static final long serialVersionUID = 1L; public static void main(String[] args) {
    new TestJLable();
    } public TestJLable() {
    init();
    } private void init() {
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(getCenterPanel(), BorderLayout.CENTER);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.pack();
    this.setVisible(true);
    } private JPanel getCenterPanel() {
    JPanel panel = new JPanel();
    JLabel lable = new MyLabel("Test");
    panel.setLayout(new BorderLayout());
    lable.setPreferredSize(new Dimension(100, 100));
    panel.add(lable, BorderLayout.CENTER);
    return panel;
    } class MyLabel extends JLabel {
    private static final long serialVersionUID = 1L; public MyLabel(String text) {
    super(text);
    } @Override
    public void paint(Graphics g) {
    super.paint(g);
    g.drawLine(this.getX(), this.getY() + this.getHeight() / 2, this.getX() + this.getWidth() / 2, this.getY());
    g.drawLine(this.getX() + this.getWidth() / 2, this.getY(), this.getX() + this.getWidth(), this.getY() + this.getHeight() / 2);
    g.drawLine(this.getX(), this.getY() + this.getHeight() / 2, this.getX() + this.getWidth() / 2, this.getY() + this.getHeight());
    g.drawLine(this.getX() + this.getWidth() / 2, this.getY() + this.getHeight(), this.getX() + this.getWidth(), this.getY() + this.getHeight() / 2);
    }
    }
    }
      

  5.   

    我也进行了手工绘制,不过应该重写paintComponent方法吧。
    但自己绘制的线不太好看。