баринов руслан



Автор Ѐуслан Баринов задал вопрос в разделе Java

Не выводит изображение в JAVA и получил лучший ответ

Ответ от
Замени это
IMG(){
JFrame frame = new JFrame();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JLayeredPane lp = getLayeredPane();
One one = new One();
lp.add(one, JLayeredPane.POPUP_LAYER);
setSize(800, 800);
setVisible(true);
}
На это
IMG(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(new One());
setSize(800, 800);
setVisible(true);
}
Не знаю, зачем ты вообще JLayeredPane доставал. Просто на сам JFrame ничего добавлено не было, точнее на IMG extends JFrame. А тот JFrame, который ты в первой строчке конструктора создавал я вообще не понял.
Этого достаточно. Работать будет, но предлагаю заменить
g.drawImage(image, 0, 0, null);
На
g.drawImage(image, 0, 0, this);
Так будет лучше. Иногда ImageObserver всё-таки должен быть.
asia4 Азия
Мастер
(2396)
Чтобы научиться работать с JPanel, придумай интерфейс из нескольких элементов.
Можешь попробовать сделать калькулятор. В точности как Обычный режим калькулятора Windows. Это хорошая тренировочная задача по панелям. Я её делал.
Ещё можешь попробовать скопировать интерфейс другой программы. Скажем, блокнота. Т. е. большое текстовое поле, а наверху несколько кнопок по горизонтали.
Здесь не обязательно делать функции редактирования текста. Даже можно, чтобы часть кнопок не работала. Просто попробуй разместить их так.
Задачу можно усложнить, сделав ещё боковую панель с инструментами, которые обозначены картинками. (в Photoshop такая есть)

Ответ от Александр Сизенко[гуру]
тут пример
ссылка
еще супер метод нужно вызвать

Ответ от Alexey[гуру]
public class Img implements Runnable {
private JFrame frame;
private Image image;
public Img(Image image) {
this.image = image;
}
@Override
public void run() {
frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
StaticImageComponent sic = new StaticImageComponent(image);
JLayeredPane lp = frame.getRootPane().getLayeredPane();
lp.add(sic, new Integer(JLayeredPane.POPUP_LAYER));
lp.setSize(sic.getPreferredSize());
frame.setSize(sic.getPreferredSize());
frame.setVisible(true);
}
public static void main(String[] args) {
File file = new File("abc.jpg");
BufferedImage img = null;
try (FileInputStream fis = new FileInputStream(file)) {
img = ImageIO.read(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Img(img));
}
}
public class StaticImageComponent extends JComponent {
final private Image image;
public StaticImageComponent(Image image) {
this.image = image;
setOpaque(true);
int w = image.getWidth(null);
int h = image.getHeight(null);
setBounds(0, 0, w, h);
}
@Override
protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
}
}

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Не выводит изображение в JAVA
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*