#java #swing #jframe #titlebar
#java #изображение #swing #Значки #jframe
Вопрос:
Я хочу добавить изображение (маленький значок) в javax.swing.JFrame
строку заголовка.
Как я могу это сделать?
Комментарии:
1.
JPanel
не имеет строки заголовка…
Ответ №1:
Поскольку JPanel
у него нет строки заголовка, я предполагаю, что вы имеете в виду JFrame
. При этом используйте setIconImage(...)
.
Вот пример использования setIconImages()
.
import java.awt.Image;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.net.URL;
import java.util.*;
class FrameIcons {
public static void main(String[] args) throws Exception {
URL url16 = new URL("http://i.stack.imgur.com/m0KKu.png");
URL url32 = new URL("http://i.stack.imgur.com/LVVMb.png");
final List<Image> icons = new ArrayList<Image>();
icons.add(ImageIO.read(url16));
icons.add(ImageIO.read(url32));
SwingUtilities.invokeLater( new Runnable() {
public void run() {
JFrame f = new JFrame("Frame Icons");
f.setIconImages(icons);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationByPlatform(true);
f.setSize(200,100);
f.setVisible(true);
}
});
}
}
Рамка с использованием значка 16×16
Вкладка приложения с помощью значка 32×32
Комментарии:
1. .. смотрите также связанный метод
setIconImages()
(обратите внимание на форму множественного числа). Если вы установите изображения размером 16×16 и 32×32, первое будет использоваться в качестве значка рамки (в системах, которые его поддерживают — я недавно отметил, что Mac. этого не делает), а второе отображается при «alt tabbing» между различными приложениями. Я понятия не имею, на каких других платформах, кроме Windows, отображается значок для представления приложений. при переключении между ними.2. @mre: Я не смог удержаться и добавил пример, используя пару изображений, позаимствованных из другой темы об этих частях. Я подумал, что лучше всего добавить его в качестве редактирования к вашему вопросу, поскольку это фактически тот же ответ. Если вы предпочитаете, отредактируйте это, и я добавлю это в качестве отдельного ответа.
3. @Andrew, это идеально. Я ценю детальную проработку, которую вы provided…it определенно повышает ценность этого ответа. слава вам! 🙂
4. @mre: Приятное дополнение к (тому, что я считаю) «ответу на правильный вопрос». 😉
5. @mre: спасибо за детали, хорошо структурированные ответы.. С вашей помощью я обнаружил, что мне подходят внутренние фреймы. Еще раз спасибо за ваш отличный ответ…