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

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

Код: 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
Swing компонент - Мой компьютер
    #33464353
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто нибудь знает, как ячейкам сделать отступы? чтоб совсем как в
эксплорере было
-----------------------------------
The Bat + My Gate

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

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

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




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

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

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


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