Я обнаружил некоторые ошибки в вашем коде и не понял, что вы пытаетесь сделать ...
1] Там вы фактически не используете первую настройку
Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
setPreferredSize(dimension); //not used
Dimension dimension2 = new Dimension(image2.getWidth(), image2.getHeight());
setPreferredSize(dimension2); //because overridden by this
Это означает, что панель имеет размеры такие же, как image2
, вы должны установить ее следующим образом:
- высота как максимальная высота обоих изображений
- ширина как минимумсуммируя ширину обеих картинок (если вы хотите нарисовать их на одной панели, как вы пытаетесь)
2], что такое типы данных image
и image2
?в приведенном выше блоке у вас есть File
, но с другими именующими переменными, File
класс класса не имеет аргумента ширины или высоты
Я предполагаю, что Image должное использование в Graphics.drawImage
затем:
Вам необходимо установить предпочтительный размер , как я уже говорил:
- высота до максимального значения высоты из изображений
- ширина как минимумкак суммарное значение каждой ширины
Размеры вещи:
Dimension panelDim = new Dimension(image.getWidth() + image2.getWidth(),Math.max(image.getHeight(),image2.getHeight()));
setPreferredSize(panelDim)
Тогда вы можете рисовать изображения в исходном размере - из-за координат, имеющих0; 0 в левом верхнем углу и в правом нижнем углу это this.getWidth ();this.getHeight () - проверьте, например. это объяснение - вам нужно начать рисовать в левом нижнем углу, а затем перейти к правильному положению, увеличивая "X", так как ширина первого изображения
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
/* public abstract boolean drawImage(Image img,
int x,
int y,
Color bgcolor,
ImageObserver observer)
*/
//start to paint at [0;0]
g2d.drawImage(image, 0, 0, this);
//start to paint just on the right side of first image (offset equals to width of first picture)- next pixel on the same line, on the bottom of the screen
g2d.drawImage(image2,image2.getWidth()+1, 0, this);
}
У меня не былошанс проверить это, но так и должно быть.Важные вещи:
- , вам нужно иметь правильные размеры для подгонки обоих изображений
- Координаты экрана начинаются в левом верхнем углу экрана [0; 0]