ciao!
vorrei creare una finestra con uno JSplitPane con:
- a sinistra un JPanel con alcuni dettagli presi da un metodo
- a destra un JPanel con una immagine
il problema è che i due JPanel non sono scrollabili, e di conseguenza devo massmizzare il JFrame per vedere tutto bene (ad esempio l'immagine che magari è parecchio grande).
siccome i due JPanel potrebbero essere riutilizzati singolarmente, ho pensato di crearli indipendenti.
quindi a sinistra questo:
codice:
public class PanelDetail extends JPanel {
private final File file;
private JScrollPane panel;
private JTextArea area;
public PanelDetail(File file) {
super();
this.file = file;
createGui();
parseFile();
}
private void createGui() {
area = new JTextArea();
panel = new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
area.setEditable(false);
setLayout(new BorderLayout());
add(panel, BorderLayout.CENTER);
}
.................................
}
a destra questo:
codice:
public class PanelImage extends JPanel {
private BufferedImage image;
private int w;
private int h;
public PanelImage(File file) {
try {
image = ImageIO.read(file);
w = image.getWidth();
h = image.getHeight();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
@Override
public Dimension getPreferredSize() {
return new Dimension(w, h);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
questo il JFrame che contiene il JSplitPane:
codice:
public class WindowImage extends JFrame {
private final File file;
private PanelDetail left;
private JPanel right;
private JSplitPane splitPane;
public WindowImage(File file) {
super("Dettaglio immagine");
this.file = file;
createGui();
}
private void createGui() {
setPreferredSize(new Dimension(800, 500));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLayout(new FlowLayout());
left = new PanelDetail(file);
right = new PanelImage(file);
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right);
splitPane.setOneTouchExpandable(true);
add(splitPane);
pack();
setLocationRelativeTo(null);
getRootPane().registerKeyboardAction(e -> {
dispose();
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
}
}
come faccio a rendere i due JPanel scrollabili (come in questa immagine per intenderci https://docs.oracle.com/javase/tutor...tpane.html)???