Вставьте изображения в JScrollPane и JScrollPane в JFrame
Мне нужна программа, которая отображает много изображений, и мне нужно окно, которое можно прокручивать для этого. Я прочитал документацию и искал на форуме, но мне все равно не удалось это сделать. Я попробовал с JScrollPane и JFrame, как вы можете видеть ниже.
Класс JScrollPane:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class EmojiWindow extends JScrollPane {
private void NewImg(String EmojiLocation, String EmojiName) {
JLabel Emoji = new JLabel(new ImageIcon(EmojiLocation));
Emoji.setToolTipText(EmojiName);
add(Emoji);
Emoji.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent arg0) {}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
@Override
public void mousePressed(MouseEvent e) {
if(SwingUtilities.isLeftMouseButton(e))
{
JFrame frame = new JFrame("new frame");
frame.setSize(300, 10);
frame.setVisible(true);
}
}
});
}
public EmojiWindow(){
NewImg("fbike.png", "Riding a bike");
NewImg("fdizzy.png", "Dizzy");
NewImg("fcubehead.png", "Cube head");
NewImg("fhappy.png", "Happy");
}
}
Главный:
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args)
{
EmojiWindow ScrollPane = new EmojiWindow();
ScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JFrame Window = new JFrame();
Window.add(ScrollPane, BorderLayout.SOUTH);
Window.setSize(300, 400);
Window.setVisible(true);
}
}
1 ответ
Прежде всего, изучите и соблюдайте соглашения об именах Java. Имена переменных НЕ должны начинаться с символа верхнего регистра. Любой пример, который вы найдете в этом форуме или учебнике, использует это соглашение. Учись на примере!!!
Не расширяйте JScrollPane. Нет необходимости делать это, так как вы не добавляете в класс никаких новых функциональных возможностей.
Кроме того, никогда не добавляйте компоненты в JScrollPane
, Один компонент добавляется к JViewPort
панели прокрутки.
Таким образом, в этом случае вы должны создать JPanel, используя соответствующий менеджер раскладки. Затем вы добавляете панель в область просмотра панели прокрутки.
Таким образом, основной код может быть что-то вроде:
JPanel imagePanel = new JPanel();
imagePanel.add( label1 );
imagePanel.add( label2 );
...
JScrollPane scrollPane = new JScrollPane( imagePanel );
window.add( scrollPane );
Прочитайте Учебное пособие по Swing для ознакомления с примерами работы со всеми основами Swing.
Редактировать:
Вы также можете попробовать Wrap Layout, который приведет к переносу компонентов на следующую строку, когда горизонтальный ряд заполнен.