Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 17
1

ImageViewer Swing

15.04.2016, 23:33. Показов 631. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем, такое дело. В Java GUI новичок, пытаюсь разобраться где что.
Делаю обыкновенную прогу для просмотра изображений. Однако есть проблема - фотографии отображаются не совсем корректно, их следует как-то (собственно, сам вопрос) масштабировать до нормального вида. Прикрепляю код и скрин.
P.S. извиняйте, что много хлама в комментариях

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
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
package menu;
 
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
 
 
public class SwingMenuDemo {
    private JScrollPane scroll;
    private JFrame mainFrame;
    private JLabel photo;
   // private JLabel headerLabel;
    private JLabel statusLabel;
   // private JPanel controlPanel;
    private JMenuBar menuBar;
 
    public SwingMenuDemo(){
        prepareGUI();
    }
 
    public static void main(String[] args){
        SwingMenuDemo  swingMenuDemo = new SwingMenuDemo();
        swingMenuDemo.showMenuDemo();
    }
 
    private void prepareGUI(){
        mainFrame = new JFrame("Java SWING Examples");
        mainFrame.setSize(800,800);
        mainFrame.setLayout(new GridLayout(1,1));
 
        scroll = new JScrollPane();
 
        //headerLabel = new JLabel("",JLabel.CENTER );
        //statusLabel = new JLabel("",JLabel.CENTER);
        photo = new JLabel("",JLabel.CENTER);
 
        //photo.setSize(300,300);
        //statusLabel.setSize(350,100);
        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent){
                System.exit(0);
            }
        });
       // controlPanel = new JPanel();
       // controlPanel.setLayout(new FlowLayout());
 
       // mainFrame.add(headerLabel);
        mainFrame.add(scroll);
       // mainFrame.add(statusLabel);
        mainFrame.setVisible(true);
    }
 
    private void showMenuDemo(){
        //create a menu bar
        menuBar = new JMenuBar();
 
        //create menus
        JMenu fileMenu = new JMenu("Файл");
        JMenu editMenu = new JMenu("Редактирование");
        final JMenu aboutMenu = new JMenu("О программе");
        final JMenu linkMenu = new JMenu("Справка");
 
        //create menu items
        JMenuItem newMenuItem = new JMenuItem("Очистить");
        newMenuItem.setAccelerator(KeyStroke.getKeyStroke('L',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        newMenuItem.setActionCommand("New");
 
        JMenuItem openMenuItem = new JMenuItem("Открыть");
        openMenuItem.setAccelerator(KeyStroke.getKeyStroke('O',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        openMenuItem.setActionCommand("Open");
 
        JMenuItem saveMenuItem = new JMenuItem("Save");
        saveMenuItem.setAccelerator(KeyStroke.getKeyStroke('S',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        saveMenuItem.setActionCommand("Save");
 
        JMenuItem exitMenuItem = new JMenuItem("Exit");
        exitMenuItem.setAccelerator(KeyStroke.getKeyStroke('E',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        exitMenuItem.setActionCommand("Exit");
 
        JMenuItem cutMenuItem = new JMenuItem("Cut");
        cutMenuItem.setAccelerator(KeyStroke.getKeyStroke('X',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        cutMenuItem.setActionCommand("Cut");
 
        JMenuItem copyMenuItem = new JMenuItem("Copy");
        copyMenuItem.setAccelerator(KeyStroke.getKeyStroke('C',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        copyMenuItem.setActionCommand("Copy");
 
        JMenuItem pasteMenuItem = new JMenuItem("Paste");
        pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke('P',
                Toolkit.getDefaultToolkit(  ).getMenuShortcutKeyMask(  ), false));
        pasteMenuItem.setActionCommand("Paste");
 
        MenuItemListener menuItemListener = new MenuItemListener();
        exitApp exit = new exitApp();
        openImage open = new openImage();
        clearImage clear = new clearImage();
 
        newMenuItem.addActionListener(clear);
        openMenuItem.addActionListener(open);
        saveMenuItem.addActionListener(menuItemListener);
        exitMenuItem.addActionListener(exit);
        cutMenuItem.addActionListener(menuItemListener);
        copyMenuItem.addActionListener(menuItemListener);
        pasteMenuItem.addActionListener(menuItemListener);
 
        final JCheckBoxMenuItem showWindowMenu = new JCheckBoxMenuItem("Show About", true);
        showWindowMenu.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if(showWindowMenu.getState()){
                    menuBar.add(aboutMenu);
                    mainFrame.repaint();
                }else{
                    menuBar.remove(aboutMenu);
                    mainFrame.repaint();
                }
            }
        });
 
        final JRadioButtonMenuItem showLinksMenu =
                new JRadioButtonMenuItem("Show Links", true);
        showLinksMenu.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
 
                if(menuBar.getMenu(3)!= null ){
                    menuBar.remove(linkMenu);
                    mainFrame.repaint();
                }else{
                    if (menuBar.getMenu(2)==linkMenu) {
                        menuBar.remove(linkMenu);
                        mainFrame.repaint();
                    } else {
                        menuBar.add(linkMenu);
                        mainFrame.repaint();
                    }
                }
            }
        });
 
        //add menu items to menus
        fileMenu.add(newMenuItem);
        fileMenu.add(openMenuItem);
        fileMenu.add(saveMenuItem);
        fileMenu.addSeparator();
        fileMenu.add(showWindowMenu);
        fileMenu.addSeparator();
        fileMenu.add(showLinksMenu);
        fileMenu.addSeparator();
        fileMenu.add(exitMenuItem);
        editMenu.add(cutMenuItem);
        editMenu.add(copyMenuItem);
        editMenu.add(pasteMenuItem);
 
        //add menu to menubar
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        menuBar.add(aboutMenu);
        menuBar.add(linkMenu);
 
        //add menubar to the frame
        mainFrame.setJMenuBar(menuBar);
        mainFrame.setVisible(true);
    }
 
    class MenuItemListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            //statusLabel.setText(e.getActionCommand()
            //        + " JMenuItem clicked.");
        }
 
    }
 
    class exitApp implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
 
    }
 
    class clearImage implements ActionListener {
        public void actionPerformed(ActionEvent e) {
//            statusLabel.setText(e.getActionCommand()
//                    + " JMenuItem clicked.");
            photo.setIcon(null);
        }
 
    }
 
    class openImage implements ActionListener {
        public void actionPerformed(ActionEvent e) {
//            statusLabel.setText(e.getActionCommand()
//                    + " JMenuItem clicked.");
            JFileChooser jfc = new JFileChooser();
            if (jfc.showOpenDialog(menuBar)==JFileChooser.APPROVE_OPTION) {
                File f = jfc.getSelectedFile();
                ImageIcon icon = new ImageIcon(f.toString());
                Image image = icon.getImage();
 
                photo.setIcon(icon);
                photo.setHorizontalAlignment(JLabel.CENTER);
                scroll.getViewport().add(photo);
 
            }
        }
 
 
    }
 
}
Миниатюры
ImageViewer Swing   ImageViewer Swing  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2016, 23:33
Ответы с готовыми решениями:

Swing,
Есть Бордерлайоут, в центре главное окно,в EAST 4 кнопки настройки, по нажатию одной из кнопок...

Swing
А здраствуйте, решил тут взяться за изучении java, хочу создать простую форму, и просто напихать...

JAVA SWING
Здравствуйте, как сделать, чтобы при щелчке появился новый шарик, но чтобы старый остался. Вот...

Упражнения на Swing
1.Упражнение. В рассмотренном примере рамки имеют различную ширину. Измените пример таким...

4
32 / 30 / 11
Регистрация: 27.09.2014
Сообщений: 359
18.04.2016, 08:42 2
OlgaSaliy, Так у меня всё корректно отображаеться)) Windows 7. Опиши проблему подробнее. В программе открыл скриншот твоего сообщения в чате.
Миниатюры
ImageViewer Swing  
0
32 / 30 / 11
Регистрация: 27.09.2014
Сообщений: 359
18.04.2016, 08:45 3
OlgaSaliy, или, может быть, тебе не нравится размер картинки, и то что её нужно прокручивать?
0
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 17
18.04.2016, 16:29  [ТС] 4
Да. Мне не нравится то, что её нужно прокручивать. Совсем не умею объяснять 😔
0
32 / 30 / 11
Регистрация: 27.09.2014
Сообщений: 359
18.04.2016, 16:37 5
OlgaSaliy, Ну мне сейчас некогда корректировать твой код, но тут есть ответ. http://programador.ru/resize-image/http://
0
18.04.2016, 16:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2016, 16:37
Помогаю со студенческими работами здесь

Заливка в SWING
Здравствуйте, как сделать заливку фигуры пикселями. Фигура-треугольник

Использование Swing и IE
IE поддерживает JDK 1.1.4 и не старше. Swing и все из Java 2 пользовать под IE нелязя Тогда зачем...

Слои в Swing
Здравствуйте. Разрабатываю своё swing приложение. В нём есть перемещение объектов. Как сделать...

Потоки в swing
Привет всем. Пишу игру, т.е. работаю с графикой через Swing компоненты. Планирую создать Класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru