2013-10-04 2 views

ответ

3

Это будет сделано используя API Border, доступный в Swing. Более подробно посмотрите на How to use borders.

Как очень грубый пример ...

enter image description here

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.EventQueue; 
import java.awt.Font; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.border.CompoundBorder; 
import javax.swing.border.EmptyBorder; 
import javax.swing.border.MatteBorder; 

public class PanelTitles { 

    public static void main(String[] args) { 
     new PanelTitles(); 
    } 

    public PanelTitles() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new TitlePane(), BorderLayout.NORTH); 
       frame.add(new JLabel("This is the content")); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TitlePane extends JPanel { 

     public TitlePane() { 
      setLayout(new BorderLayout());    
      setBorder(new CompoundBorder(new EmptyBorder(4, 4, 4, 4), new MatteBorder(0, 0, 1, 0, Color.BLACK))); 
      JLabel label = new JLabel("This is a title"); 
      label.setFont(label.getFont().deriveFont(Font.BOLD)); 
      add(label); 
     }   
    }   
} 
+2

Также посмотрите на «TitledBorder», как показано в [этом ответе] (http://stackoverflow.com/a/19138661/418556). Это не так хорошо, как многократная граница, видимая в этом решении, но, возможно, меньше строк кода. –

Смежные вопросы