Показывать полное изображение при наведении на миниатюру всплывающего окна / наложения
Я отображаю эскизы в JPanel. При наведении курсора на такой эскиз, я хочу отобразить его полную версию в виде наложения на эскиз.
Используя HTML, я просто создал бы div с правильными позициями и высоким z-индексом, чтобы он перекрывал все остальное. Возможно ли что-то похожее и легкое с Swing?
1 ответ
Решение
Одним из способов является использование подсказки.
import javax.swing.*;
import java.awt.GridLayout;
class ThumbTip {
private static final String HTML = "<html><body>";
ThumbTip(String[] album) {
JPanel p = new JPanel(new GridLayout(1,0,2,2));
for (String url : album) {
String s = HTML + "<img src='" + url.toString() + "'";
String size = " width=200 height=150";
JLabel l = new JLabel(s + size + ">");
l.setToolTipText(s + ">");
p.add(l);
}
JOptionPane.showMessageDialog(null, p);
}
public static void main(String[] args) {
final String[] urls = {
"http://pscode.org/media/stromlo1.jpg",
"http://pscode.org/media/stromlo2.jpg"
};
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ThumbTip(urls);
}
});
}
}
Замечания:
- В этом демо. изображение всплывающей подсказки загружается из сети каждый раз, когда оно используется. Потерпи.
-
Я не удосужился сделать "миниатюру" оригинальных изображений."Батареи не включены".Последнее редактирование исходного кода использует HTML (width
/height
указано дляimage
) чтобы уменьшить "миниатюры". Я не буду обновлять скриншот. - В конечном итоге предложение об использовании
JWindow
лучше, так как он дает вам больше контроля над тем, где и как долго появляется всплывающее окно, а также за его точный вид. Но этот хак значительно короче.;)