Я хочу добавить изображение в JPanel, JPanel находится внутри JInternalFrame, а у JInternalFrame есть родитель, JDesktopPane.
Я пытался с другим классом добавить изображение из пути, а затем jPanel1 = new Imagen(<String FilePath>);
класс получит путь в String в конструкторе окна, но это не работает. и я попытался настроить код из initComponents()
, строку jPanel1 = javax.swing.JPanel();
и заменить эту строку на jPanel1 = new Imagen();, параметр, который получит конструктор, - это путь к файлу изображения, и этот метод работает нормально, но он запускается только один раз (внутри метода initComponents()), и я не могу (или не знаю), как заменить изображение из JPanel. :(
Проект начинается сначала с JDesptopPane, затем с одним JInternalFrame (1), из этого внутреннего фрейма он показывает другой JInternalFrame (2), из этого внутреннего фрейма он показывает другой JInternalFrame (3), во внутреннем фрейме 3, который я хочу найти с помощью кнопку и JFileChooser, изображение и путь, полученный средством выбора файлов, я хочу установить в качестве параметра в классе Imagen(). и установите изображение в JPanel, встроенное в JInternalFrame(3).
РЕДАКТИРОВАТЬ 1: Спасибо за ваши комментарии. Вот код JInternalFrame(3), конструктора окна:
public AgregarContacto() {
JFileChooser jf = new JFileChooser();
jf.setDialogTitle("Elija el archivo de Imagen");
int i = jf.showOpenDialog(null);
if (i == JFileChooser.APPROVE_OPTION) {
default1 = jf.getSelectedFile().getAbsolutePath();
}
initComponents();
jPanel1= new Imagen(default1);
for (String llenarMese : p.llenarMeses()) {
Mes.addItem(llenarMese);
}
for (String llenarDia : p.llenarDias31()) {
Dia.addItem(llenarDia);
}
for (String llenarAnios : p.Anios()) {
Anio.addItem(llenarAnios);
}
}
А вот код класса Imagen(), который получит в Конструктор строку:
public class Imagen extends JPanel {
String ruta;
private BufferedImage imag;
public Imagen(String path){
ruta = path;
try{
imag = ImageIO.read(new File("unknown.png"));
}catch(IOException ex){
JOptionPane.showMessageDialog(null, "Error " + ex.getMessage());
}
}
@Override
public void paint(Graphics g){
super.paint(g);
Image Scaledimage = imag.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_SMOOTH);
g.drawImage(Scaledimage, 0, 0, null);
}
}
ImagePanel
, который позволяет ему изменять изображение - person MadProgrammer   schedule 19.05.2015try{ imag = ImageIO.read(new File("unknown.png")); ImagePane imgPane = new ImagePane(); imgPane.setImage(imag); imgPane.setRounded(true); jPanel1.add(imgPane); }catch(IOException ex){ ex.printStackTrace(); }
, но это не работает; - person Allan Ramirez   schedule 19.05.2015revalidate
наjPanel1
ПОСЛЕ того, как вы добавили новый экземплярImagePane
, также убедитесь, что вы сначала удалили все старые. - person MadProgrammer   schedule 19.05.2015