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:
a destra 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); } ................................. }
questo il JFrame che contiene il JSplitPane: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); } }
come faccio a rendere i due JPanel scrollabili (come in questa immagine per intenderci https://docs.oracle.com/javase/tutor...tpane.html)???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); } }

Rispondi quotando
