Форум программистов, компьютерный форум, киберфорум
Наши страницы
Svoboda
Войти
Регистрация
Восстановить пароль
Рейтинг: 4.00. Голосов: 2.

Рамки в swing

Запись от Svoboda размещена 25.09.2012 в 17:25

В библиотеке swing для создания рамок используем класс BorderFactory, из которого вызываем статические методы для создания рамок различного вида.
Для того, чтобы установить рамку для компонента, из его объекта необходимо вызвать метод setBorder(Border b), а в качестве аргумента передать ему статический метод создания рамки, класса BorderFactory.

Пример:
Код:
JLabel l = new JLabel(“label”);
l.setBorder(BorderFactory.createLineBorder(Color.GRAY, 2));
Нажмите на изображение для увеличения
Название: borders.jpg
Просмотров: 738
Размер:	74.8 Кб
ID:	1357

Теперь подробнее о типах рамок. В библиотеке swing существуют 7 простых типов рамок :
  • объемная,
  • пустая,
  • резная,
  • линия,
  • с фоном,
  • с заголовком,
  • с закругленными углами.


Существует также метод, который позволяет задать внешнюю и внутреннюю рамки – createCompoundBorder(Border out, Border in)
Как правило, им и пользуются, т.к. простого метода недостаточно – рамка «прилипает» к компоненту. Метод createCompoundBorder(Border out, Border in) позволит сделать внешнюю рамку такой, какую вы выберите, а внутреннюю рамку задать пустую, с помощью метода createEmptyBorder(a, b, c, d), в которром в качестве параметров передаем целочисленные значения, обозначающие отступы от компонента в пикселах.

Вот код, демонстрирующий применение различных рамок к текстовой метке в окне:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.*;
 
public class MyBrdr {
    public static void main(String[] args) {
        FrameBordered fb = new FrameBordered();
        fb.setVisible(true);
    }
}
 
class FrameBordered extends JFrame{
    JLabel l1;
    JLabel l2;
    JLabel l3;
    JLabel l4;
    JLabel l5;
    JLabel l6;
    JLabel l7;
    JLabel l8;
    JPanel p;
    public FrameBordered(){
        setTitle("Примеры рамок");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
         
        
        p = new JPanel();
        p.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
        p.setLayout(new GridLayout(4,2,25,25));
        
        l1 = new JLabel("Объемная рамка(1)");
        l1.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createBevelBorder(BevelBorder.RAISED),
                BorderFactory.createEmptyBorder(25, 25, 25, 25)));
        
        l2 = new JLabel("Объемная рамка(2)");
        l2.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createBevelBorder(BevelBorder.LOWERED),
                BorderFactory.createEmptyBorder(25, 25, 25, 25)));
        
        l3 = new JLabel("Резная рамка (1)");
        l3.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createEtchedBorder(EtchedBorder.RAISED),
                BorderFactory.createEmptyBorder(25, 25, 25, 25)));
        
        l4 = new JLabel("Резная рамка (2)");
        l4.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),
                BorderFactory.createEmptyBorder(25, 25, 25, 25)));
        
        l5 = new JLabel("Рамка линия ");
        l5.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createLineBorder(Color.gray, 2),
                BorderFactory.createEmptyBorder(25, 25, 25, 25)));
        
        l6 = new JLabel("Рамка c фоном ");
        l6.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createMatteBorder(5, 5, 5, 5, new ImageIcon("D:/Tests/bord.jpg")),
                BorderFactory.createEmptyBorder(20, 20, 20, 20)));
        
        l7 = new JLabel("Рамка c заголовком");
        l7.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createTitledBorder(
                        BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),
                        "title"),
                BorderFactory.createEmptyBorder(30, 30, 30, 30)));
        
        l8 = new JLabel("Скругленные углы");
        l8.setBorder(BorderFactory.createCompoundBorder(
                new LineBorder(Color.BLUE, 4, true),
                BorderFactory.createEmptyBorder(20, 20, 20, 20)));
        
        p.add(l1);
        p.add(l2);
        p.add(l3);
        p.add(l4);
        p.add(l5);
        p.add(l6);
        p.add(l7);
        p.add(l8);
        add(p);
        pack();
    }
}
Размещено в Без категории
Просмотров 7200 Комментарии 0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru