2017-06-07 3 views
0

Kann mir jemand helfen? Ich versuche, eine JFrame zu erstellen, wo ich die JScrollBar anpassen und die Ansicht von oben nach unten der JLabel mit einer ImageIcon ändern könnte, einschließlich der anderen JLabel, die eine MouseEvent von JFileChooser hat.Wie man JScrollBar auf JLabel mit ImageIcon in Java repariert?

Leider funktioniert mein Code nicht, wie ich es dachte. Irgendwelche Ideen, warum es das tut? Oder gibt es fehlende Codes, die ich beachten sollte? Mein einziges Ziel ist es, die JScrollBar Arbeit sowohl ich JLabels

public class DocVieweR extends JFrame { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    private JPanel contentPane; 
    private int yPos = 0; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        DocVieweR frame = new DocVieweR(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public DocVieweR() { 
     setTitle("DocVieweR"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(816, 705); 
     setLocationRelativeTo(null);   
     setResizable(false); 
     contentPane = new JPanel(); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     JScrollBar scrollBar = new JScrollBar(); 
     scrollBar.addAdjustmentListener(new AdjustmentListener() { 
      @Override 
      public void adjustmentValueChanged(AdjustmentEvent e) { 
       yPos =+ e.getValue();    
      } 
     }); 
     scrollBar.setBounds(793, 0, 17, 676); 
     contentPane.add(scrollBar);  

     JLabel lblPHOTO1x1 = new JLabel("SELECT IMAGE"); 
     lblPHOTO1x1.setFont(new Font("Segoe UI", Font.BOLD, 16)); 
     lblPHOTO1x1.setHorizontalAlignment(SwingConstants.CENTER); 
     lblPHOTO1x1.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       JFileChooser chosenFILE = new JFileChooser(); 
       chosenFILE.showOpenDialog(null); 
       File getFILE = chosenFILE.getSelectedFile(); 
       ImageIcon pic = new ImageIcon(getFILE.getAbsolutePath()); 
       lblPHOTO1x1.setIcon(pic); 
      } 
     }); 
     lblPHOTO1x1.setBounds(585, 228, 129, 128); 
     contentPane.add(lblPHOTO1x1);  

     JLabel lblBIODATA = new JLabel(""); 
     ImageIcon img = new ImageIcon("resources/BIODATA_96dpi.jpg"); 
     lblBIODATA.setIcon(img); 
     lblBIODATA.setBounds(0, yPos, 793, 1122); 
     contentPane.add(lblBIODATA); 
    } 
} 
+1

1) Können Sie den Code jetzt nicht testen, aber es in einer ersten Ansicht kann ich Sie mit dieser Zeile finden Sie unter ' contentPane.setLayout (null); 'und' setBounds (...) 'Methoden, das wird Ihnen viele Probleme bereiten, warum? Weil [Null-Layout ist böse] (http://www.fredosaurus.com/notes-java/GUI/layouts/nulllayout.html) und [verpönt] (https://stackoverflow.com/questions/6592468/why- ist-es-runzelte-auf-zu-benutzen-ein-null-Layout-in-swing) ... 2) * "Irgendwelche Ideen, warum es das macht?" * Warum es was macht? – Frakcool

+0

Vielen Dank Sir Frakcool für die Antwort so schnell, Ihr Kommentar machte es so klar, das Problem zu lösen. –

+2

Wenn Sie es gelöst haben, dann posten Sie eine Antwort, und bitte, rufen Sie mich nicht Sir, ich bin überhaupt nicht alt ... :) – Frakcool

Antwort

0

zu machen habe JScrollBar benutzen, wenn ich gewesen JScrollPane verwendet haben sollte. Außerdem habe ich versehentlich festgestellt, dass Sie eine zusätzliche Codezeile hinzufügen müssen, z. B. "scrollPane.setViewportView (JLabelNAME)". Damit es funktioniert, habe ich auch bemerkt, dass das Bild nach dem Importieren des Bilds mit JFileChooser verschwindet, wenn Sie die Bildlaufleiste verschieben, aber kein großes Problem darstellen wird (ein paar Debug-Funktionen könnten helfen). Das contentPane.setLayout (null); und SetBounds (...) sind nicht das Problem, haben mir aber trotzdem die Idee gegeben. DANKE FRAKCOOL !!! : D

public class DocViewer erweitert JFrame {

private static final long serialVersionUID = 1L; 
private JPanel contentPane; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       DocVieweR frame = new DocVieweR(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the frame. 
*/ 
public DocVieweR() { 
    setTitle("DocVieweR"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setSize(818, 705); 
    setLocationRelativeTo(null);   
    setResizable(false); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null);   

    JLabel lblPHOTO1x1 = new JLabel("SELECT IMAGE"); 
    lblPHOTO1x1.setFont(new Font("Segoe UI", Font.BOLD, 16)); 
    lblPHOTO1x1.setHorizontalAlignment(SwingConstants.CENTER); 
    lblPHOTO1x1.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      JFileChooser chosenFILE = new JFileChooser(); 
      chosenFILE.showOpenDialog(null); 
      File getFILE = chosenFILE.getSelectedFile(); 
      ImageIcon pic = new ImageIcon(getFILE.getAbsolutePath()); 
      lblPHOTO1x1.setIcon(pic); 
     } 
    });  
    lblPHOTO1x1.setBounds(585, 228, 129, 128); 
    contentPane.add(lblPHOTO1x1); 
    //scrollPane.setViewportView(lblPHOTO1x1); 

    JScrollPane scrollPane = new JScrollPane(); 
    scrollPane.setBounds(0, 0, 812, 676); 
    contentPane.add(scrollPane);   

    JLabel lblBIODATA = new JLabel(""); 
    ImageIcon img = new ImageIcon("resources/BIODATA_96dpi.jpg"); 
    lblBIODATA.setIcon(img); 
    lblBIODATA.setSize(793, 1122); 
    scrollPane.setViewportView(lblBIODATA); 
    contentPane.add(lblBIODATA); 

} 

}

+3

* "Die contentPane.setLayout (null); und setBounds (...) sind nicht das Problem "* - Du hast keine Ahnung, wie weit du von der Wahrheit entfernt bist – MadProgrammer