Я не верю, что это возможно со стандартными границами, в основном потому, что Border
не является Container
, и поэтому в него не могут быть добавлены другие компоненты.
Но, если вы хотите перейти к реализации пользовательской границы, можно подделать границу, например:
private class BorderFaker extends JPanel
{
public BorderFaker()
{
add( new JButton( "Faked!" ) );
}
@Override
public void paintComponent( Graphics g )
{
super.paintComponent( g );
drawFauxBorder( g );
}
private void drawFauxBorder( Graphics g )
{
g.setColor( UIManager.getColor( "border" ) );
g.drawRect( 15, 15, getWidth() - 30, getHeight() - 30 );
}
}
Это показывает, как вы могли бы сделать это, но это создает много проблем, таких как различие между компонентами, которые вы хотите внутри границы, по сравнению с границей (я только жестко закодировал "Faked!" кнопка для демонстрации). И вам все равно придется организовать расположение компонентов относительно «границы». Это потребовало бы некоторой тщательной обработки компонентов и некоторой удобной компоновки - как первоначально предлагалось @ trashgod .
Тем не менее, я не знаю, я бы предпочел сделать что-то подобное и подделать границу, чем подделывать рисунок кнопки. Если вы рисуете свою собственную кнопку, вы теряете соответствие текущему внешнему виду и ощущениям, и если вы не будете выполнять все то, что делает пользовательский интерфейс кнопки (обрабатывать опрокидывания, состояние охраны и т. Д.), Это вряд ли будет хорошо выглядеть.