Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing компонент - Мой компьютер / 6 сообщений из 6, страница 1 из 1
28.12.2005, 10:31
    #33461151
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing компонент - Мой компьютер
Есть ли такой компонент, в который я добавляю элементы, а он отображает их так же, как и окно explorer в режиме эскизов страниц (или даже лучше если можно выбрать режим, опять же как в explorer), и такой же возможностью выделения мышью (растянул прямоугольник, и все, что в него попало, выделилось) ?

что то я дежн не знаю как у гугла спросить...
...
Рейтинг: 0 / 0
28.12.2005, 11:08
    #33461262
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing компонент - Мой компьютер
...
Рейтинг: 0 / 0
28.12.2005, 12:21
    #33461563
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing компонент - Мой компьютер
тухляк там. сам написал.

Код: plaintext
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.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.*;
import java.util.ArrayList;

/**
 * Created by IntelliJ IDEA.
 * Date: 28.12.2005
 * Time: 11:36:12
 */
public class ExplorerPane extends JList {

    private Point start;
    private Point end;

    public void paint(Graphics g) {
        super.paint(g);
        if (start!=null && end!=null) {
            Graphics2D g2 = (Graphics2D) g;
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,  0 .5f));
            g2.setPaint(Color.blue);
            g2.fillRect(
                    new Long(Math.min(Math.round(start.getX()), Math.round(end.getX()))).intValue(),
                    new Long(Math.min(Math.round(start.getY()), Math.round(end.getY()))).intValue(),
                    new Long(Math.round(Math.abs(end.getX() - start.getX()))).intValue(),
                    new Long(Math.round(Math.abs(end.getY() - start.getY()))).intValue()
            );
        }
    }

    public ExplorerPane() {
        getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                end = e.getPoint();
                doSelection(start, end);
                start = null;
                end = null;
                repaint();
            }
        });
        addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                if (start == null) {
                    start = e.getPoint();
                }
                end = e.getPoint();
                doSelection(start, end);
                repaint();
            }
        });
        setLayoutOrientation(HORIZONTAL_WRAP);
        setVisibleRowCount( 0 );
    }


    public void doSelection(Point start, Point end) {
        if (start==null || end==null) {
            return;
        }
        Rectangle r = new Rectangle(
                new Long(Math.min(Math.round(start.getX()), Math.round(end.getX()))).intValue(),
                new Long(Math.min(Math.round(start.getY()), Math.round(end.getY()))).intValue(),
                new Long(Math.round(Math.abs(end.getX() - start.getX()))).intValue(),
                new Long(Math.round(Math.abs(end.getY() - start.getY()))).intValue()
        );
        java.util.List selected = new ArrayList();
        for (int i =  0 ; i < getModel().getSize(); i++) {
            //Point p = indexToLocation(i);
            Rectangle cellr = getCellBounds(i, i);
            if (!(r.intersection(cellr).isEmpty())) {
                selected.add(new Integer(i));
            }
        }
        int[] sel = new int[selected.size()];
        for (int i =  0 ; i < sel.length; i++) {
            sel[i] = ((Integer)selected.get(i)).intValue();
        }
        setSelectedIndices(sel);

        Component[] items = getComponents();
        //setSelectedIndices();
    }


    public static void main(String[] args) {
        JFrame f = new JFrame("ss");
        f.setSize( 500 ,  500 );
        Panel p = new Panel(new BorderLayout());


        DefaultListModel model = new DefaultListModel();
        model.addElement("test1");
        model.addElement("test2");
        model.addElement("test3");
        model.addElement("test4");
        model.addElement("test1");
        model.addElement("test2");
        model.addElement("test3");
        model.addElement("test4");
        model.addElement("test1");
        model.addElement("test2");
        model.addElement("test3");
        model.addElement("test4");
        model.addElement("test1");
        model.addElement("test2");
        model.addElement("test3");
        model.addElement("test4");

        ExplorerPane pane = new ExplorerPane();
        pane.setModel(model);

        p.add(pane, BorderLayout.CENTER);
        f.getContentPane().add(p);
        f.show();
    }
}


-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.12.2005, 14:11
    #33464353
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing компонент - Мой компьютер
кто нибудь знает, как ячейкам сделать отступы? чтоб совсем как в
эксплорере было
-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.12.2005, 14:38
    #33464443
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing компонент - Мой компьютер
может

pane.setFixedCellHeight(50);
...
Рейтинг: 0 / 0
29.12.2005, 15:21
    #33464591
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing компонент - Мой компьютер
yelena
> может

> pane.setFixedCellHeight(50);Тема==Ответить




не, это просто размер ячейки. я его в 150 установил по ширине и
высоте - ячейки получаются квадратными. некрасиво то, что ячейки
притыкаются друг к другу.
думаю, нужно переписать рисовальщика ячеек для случая выделенной
ячейки.

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing компонент - Мой компьютер / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]