Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中制作3D圆角JLabel?_Java_Swing_Border_Jlabel_Paintcomponent - Fatal编程技术网

如何在Java中制作3D圆角JLabel?

如何在Java中制作3D圆角JLabel?,java,swing,border,jlabel,paintcomponent,Java,Swing,Border,Jlabel,Paintcomponent,我知道有一种方法可以扩展JLabel来绘制3D边框,也有一种方法可以绘制圆形边框,但如何同时获得这两种效果呢?这是我的密码 protected void paintComponent(Graphics g) { g.setColor(getBackground()); g.fillRoundRect(0, 0, getWidth()-1, getHeight()-1, 25, 25); g.fill3DRect(10, 10, 30, 30, true);

我知道有一种方法可以扩展JLabel来绘制3D边框,也有一种方法可以绘制圆形边框,但如何同时获得这两种效果呢?这是我的密码

protected void paintComponent(Graphics g) {
     g.setColor(getBackground());
     g.fillRoundRect(0, 0, getWidth()-1, getHeight()-1, 25, 25);
     g.fill3DRect(10, 10, 30, 30, true);
     super.paintComponent(g);
与圆角或其变体一起使用

与圆角或其变体一起使用


您参考此代码创建圆角JLabel:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class RoundedLineBorder extends JPanel {

    public RoundedLineBorder() {
        super(true);
    setLayout(new BorderLayout());

        JLabel label = new JLabel("Rounded Corners");

        label.setHorizontalAlignment(JLabel.CENTER);

    LineBorder line = new LineBorder(Color.blue, 2, true);

        label.setBorder(line);

        add(label, BorderLayout.CENTER);
    }

    public static void main(String s[]) {
         JFrame frame = new JFrame("Rounded Line Border");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(500, 200);
         frame.setContentPane(new RoundedLineBorder());
         frame.setVisible(true);
    }
}

请参考此代码创建圆角JLabel:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class RoundedLineBorder extends JPanel {

    public RoundedLineBorder() {
        super(true);
    setLayout(new BorderLayout());

        JLabel label = new JLabel("Rounded Corners");

        label.setHorizontalAlignment(JLabel.CENTER);

    LineBorder line = new LineBorder(Color.blue, 2, true);

        label.setBorder(line);

        add(label, BorderLayout.CENTER);
    }

    public static void main(String s[]) {
         JFrame frame = new JFrame("Rounded Line Border");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(500, 200);
         frame.setContentPane(new RoundedLineBorder());
         frame.setVisible(true);
    }
}

你的代码不工作吗?它显示了什么?与覆盖
paintComponent()
相比,使用下面的答案中所示的
JLabel.setBorder()
将获得更大的成功,因为如果使用
setBorder()
,面板可能会调整其容器中的大小。您的代码不起作用吗?它显示了什么?与覆盖
paintComponent()
相比,使用下面的答案中所示的
JLabel.setBorder()
将获得更大的成功,因为如果使用
setBorder()
,面板可能会调整其容器中的大小。