Как создать закругленную границу заголовка в Java Swing - PullRequest
4 голосов
/ 16 июня 2010

Я понимаю, что для создания границы заголовка вы делаете что-то вроде:

BorderFactory.createTitledBorder("  Your Title  ");

Однако это создает прямоугольную границу, тогда как мне нужен прямоугольник с изогнутыми углами.

Теперь, насколько я понимаю, вы можете создать собственную границу с помощью:

class CustomBorder implements Border
{
  ...
}

Проблема в том, что я не уверен, как написать код, который переопределяет метод:

public void paintBorder(Component component, Graphics g, int x, int y, int width, int height)

Или, еще лучше, есть ли способ сделать это без реализации вашего собственного класса Border? А если нет, то как бы вы написали эту пользовательскую границу заголовка? Я в порядке, когда рисую прямоугольник со скругленными углами, но как ты это делаешь, чтобы тоже было место для метки?

Ответы [ 2 ]

6 голосов
/ 22 июня 2010

Можно создать границу заголовка с закругленными краями без реализации собственного класса Border. Просто передайте скругленную границу конструктору TitledBorder. Попробуйте следующее:

LineBorder roundedLineBorder = new LineBorder(Color.black, 5, true);
TitledBorder roundedTitledBorder = new TitledBorder(roundedLineBorder, "Title");
3 голосов
/ 30 августа 2011

Хотя эта ветка уже немного устарела, возможно, кто-то, кто спотыкается о ней, может найти решение полезным:

Вы можете добавить заголовок к любой границе, которую хотите:

  1. реализуйте свой пользовательский класс границ public class MyBorder extends AbstractBorder {..., а в методе public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) вы можете нарисовать свою собственную пользовательскую границу в контексте Graphics

  2. создать экземпляр этой пользовательской границы

    Border myborder = new MyBorder();
    
  3. создайте TitledBorder, используя вашу пользовательскую границу в качестве шаблона, и добавьте его к нужному объекту (в данном случае JPanel:

    jPanel1.setBorder(BorderFactory.createTitledBorder(myborder , "Border title"));
    

Теперь вы должны увидеть свою пользовательскую границу и над ней заголовок с настройками по умолчанию для стиля Look & Feel, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...