tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
894
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hitomie hitomie ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    4
    Hallo,
    ich hoffe hier kann mir jemand helfen bin echt am verzweifeln

    Ich hab eine jscrollpane gemancht. Leider schaffe ich es nicht Bilder und Text da rein zu tun,
    die Bilder lassen sich dann nicht mit scrollen und liegen über den Text

    Bin echt ein Anfänger und hab das mit netbeans gemacht.
    eine Scrollpane gemacht, dann Textarea darüber und an denn stellen wo Bilder sind hab ich ein lable gemacht.

    Ich hoffe jemand kann mir sagen was ich falsch mache und wie ich es richtig machen.
    Oder mir ein passendes Beispiel zeigen kann.

    Danke
    liebe Grüße
     

  2. #2
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    Hallo hitomie,

    wenn du ein wenig Code posten könntest, fällt das Fehlerfinden vermutlich etwas leichter


    Grüße
    Carron
     

  3. #3
    hitomie hitomie ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    4
    PHP-Code:
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */

    /*
     * anleitung2.java
     *
     * Created on 10.06.2010, 20:42:32
     */

    package gui;

    /**
     *
     * @author me
     */
    public class anleitung2 extends javax.swing.JFrame {

        
    /** Creates new form anleitung2 */
        
    public anleitung2() {
            
    initComponents();
        }

        
    /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        
    @SuppressWarnings("unchecked")
        
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
        
    private void initComponents() {

            
    jLabel2 = new javax.swing.JLabel();
            
    jScrollPane1 = new javax.swing.JScrollPane();
            
    jTextArea1 = new javax.swing.JTextArea();
            
    jLabel1 = new javax.swing.JLabel();

            
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            
    getContentPane().setLayout(null);

            
    jLabel2.setIcon(new javax.swing.ImageIcon("C:\\Users\\me\\Documents\\NetBeansProjects\\gui\\src\\gui\\form.jpg")); // NOI18N
            
    getContentPane().add(jLabel2);
            
    jLabel2.setBounds(10024029090);

            
    jTextArea1.setColumns(20);
            
    jTextArea1.setRows(5);
            
    jTextArea1.setText("Das ist ein Test zum Test\n1\n2\n2\n3\n3\n4\n5\n5\n6\n\n\n\n\n\n\n\nund hier gehts weiter ");
            
    jScrollPane1.setViewportView(jTextArea1);

            
    getContentPane().add(jScrollPane1);
            
    jScrollPane1.setBounds(80100330270);

            
    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gui/anleitung.jpg"))); // NOI18N
            
    getContentPane().add(jLabel1);
            
    jLabel1.setBounds(-600624457);

            
    pack();
        }
    // </editor-fold>

        /**
        * @param args the command line arguments
        */
        
    public static void main(String args[]) {
            
    java.awt.EventQueue.invokeLater(new Runnable() {
                public 
    void run() {
                    new 
    anleitung2().setVisible(true);
                }
            });
        }

        
    // Variables declaration - do not modify
        
    private javax.swing.JLabel jLabel1;
        private 
    javax.swing.JLabel jLabel2;
        private 
    javax.swing.JScrollPane jScrollPane1;
        private 
    javax.swing.JTextArea jTextArea1;
        
    // End of variables declaration



    So das ist mein Java code wie gesagt, hab das mit netbeans gemacht , (das heißt nix selber geschrieben ). Hoffe du kannst mir helfen.
     

  4. #4
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    Hi hitomie,

    da du vermutlich vorerst weiter mit Netbeans deine GUI zusammenklicken wirst, werde ich vermeiden dir modifizierten Code zu geben, mit dem der Netbeans-GUI-Builder nichts anfangen kann.

    Also nur ein paar Hinweise:
    • für alle deine Komponenten wird getContentPane().add(...); aufgerufen. Wenn du möchtest, das deine Labels bzw. deine TextArea in der JScrollPane mitbewegt werden, müssen diese der JScrollPane untergeordnet werden (z.B. jScrollPane1.add(jTextArea1)) etc.)
    • um eine dynamische GUI zu erhalten, lohnt es sich einen Blick in die gegebenen LayoutManager zu verwerfen (siehe z.B. hier), der GUI-Builder nutzt nämlich leider das NULL-Layout (getContentPane().setLayout(null)), bei dem pixelgenau die Position und Größe der einzelnen Komponenten festgelegt wird (unpraktisch wenn sich die Fenstergröße mal verändert, oder man einfach nur die GUI von Hand erweitert...)
    • Grundsätzlich bin ich ein Verfechter von handgeschriebene GUIs, weil der ausufernde Code von GUI-Buildern für meine Begriffe zu umständlich ist. Aber das ist nur eine persönliche Vorliebe und um den Umgang mit GUI-Komponenten zu lernen, ist ein solche Editor manchmal durchaus hilfreich...

    Gute Nacht und Grüße
    Carron
     

  5. #5
    hitomie hitomie ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    4
    Erstmal vielen vielen Dank für deine Antwort, aber gegen einen modifizierten Code hätte ich nix könnt ich dann doch über eclipse oder so sehe oder?


    Werd auf jedenfall mal versuchen das unterzuordnen...hatte das vorher schonmal versucht nur leider konnte man es dann gar nicht mehr sehen weil es darunter war....

    ohman das macht mich alles fertig...
     

  6. #6
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    Hallo,

    soweit ich das verstanden habe ist dein "anleitung.jpg" als Hintergrundbild gedacht. Dafür habe ich aus einem anderen Beitrag hier im Forum den Code übernommen konnte ihn aber nicht auf die Schnelle testen.
    Der Rest hat meines Erachtens funktioniert. Leider konnte ich dem NULL-Layout nicht deinen genauen GUI-Aufbau entnehmen (deswegen mag ich es auch nicht :P )

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    
    package gui;
     
    import java.awt.Graphics;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.WindowConstants;
     
    public final class Anleitung extends JFrame {
        
        // Das Hintergrundbild
        final ImageIcon background;
     
        /**
         * Konstruktor legt das Fenster mit dem gegebenen Titel an.
         * 
         * @param title
         *            zu setzender Titeltext
         */
        public Anleitung(final String title) {
            // Super-Konstruktor (JFrame) aufrufen
            super(title);
            // Schliessen des Fenster soll die Anwendung beenden
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
     
            // Hintergrundbild hinterlegen
            this.background = new ImageIcon(getClass().getResource(
                "/gui/anleitung.jpg"));
     
            // Inhaltsbereich mit Hintergrundbild initialisieren
            setContentPane(new JPanel(new GridBagLayout()) {
                @Override
                protected void paintComponent(final Graphics graphics) {
                    // normales Zeichnen bestehen lassen
                    super.paintComponent(graphics);
                    // Hintergrundbild einsetzen (obere linke Ecke)
                    graphics.drawImage(Anleitung.this.background.getImage(), 0, 0,
                            this);
                }
            });
            // Komponenten in der contentArea anlegen
            initComponents();
            // Fenster auf bevorzugte Groesse setzen
            pack();
        }
     
        /**
         * Legt die eigentlichen Komponenten im Inhaltsbereich an.
         */
        private void initComponents() {
            // ganz oben links das Label mit der "form.jpg" einsetzen
            getContentPane().add(new JLabel(new ImageIcon(getClass().getResource("/gui/form.jpg"))));
            // Eingabefeld anlegen
            final JTextArea textArea = new JTextArea();
            // Testtext einsetzen
            textArea.setText("Ein Testtext zum Testen des Textfeldes.\n"
                    + "Und hier kommen die neuen Zeilen:"
                    + "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "Und wieder Text...");
            // Eingabefeld scrollbar machen
            final JScrollPane scrollPane = new JScrollPane(textArea);
            // Layout-Informationen des Eingabefelds zusammenstellen
            final GridBagConstraints textAreaConstr = new GridBagConstraints();
            // Eingabefeld soll sich den ganzen Platz nehmen
            textAreaConstr.fill = GridBagConstraints.BOTH;
            // auch bei Groessenaenderungen: volle Breite
            textAreaConstr.weightx = 1;
            // auch bei Groessenaenderungen: volle Hoehe
            textAreaConstr.weighty = 1;
            // Grid-Position (0,1), auf (0,0) liegt ja das Label
            textAreaConstr.gridy = 1;
            // scrollbares Eingabefeld einsetzen
            getContentPane().add(scrollPane, textAreaConstr);
        }
    }

    Ich hoffe es hilft.

    Viele Grüße
    Carron
    Geändert von Carron (12.06.10 um 00:56 Uhr)
     

  7. #7
    hitomie hitomie ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    4
    ohman ich heul gleich

    Ich hab denn Code übernommen doch leider geht das nicht..es werden meine "anderen" fenster übernommen. Hab das in einer eigenen Package nochmal versucht und es hat wieder nicht geklappt...mache ich irgendwas falsch? was soll ich jetzt machen ?


    Nochmals vielen Dank
     

  8. #8
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    N'Abend

    Genau das meinte ich mit:
    ... werde ich vermeiden dir modifizierten Code zu geben, mit dem der Netbeans-GUI-Builder nichts anfangen kann.
    Daher lieber den Kopf etwas in die LayoutManager bzw. allgemein die GUI-Programmierung stecken und sich dann genau das bauen, was du haben willst.
    Da lernt man ne ganze Menge, was auch für das übrige Programmieren außerhalb der GUI hilfreich ist, und nachvollziehbaren (vermutlich sauberen Code). Sollten dabei Probleme auftreten, die nicht mittels Forums- bzw. allgemeiner Internetsuche zu bewältigen sind, dann triffst du hier immer auf offene Ohren.

    Testhalber kannst du ja in die von mir schon vorgeschlagene Anleitung-Klasse noch eine main()-Methode einbauen um das Ganze mal zu testen.

    Code java:
    1
    2
    3
    
    public static void main(String[] args) {
        new Anleitung("Anleitung - Fenster").setVisible(true);
    }

    Wie gesagt: mit auskommentierten Bildern hat das bei mir so funktioniert.

    Vielleicht nimmst du das als Ansatzpunkt und baust dir dann deine GUI von Hand.


    Alternativ müsste sich jemand zu Wort melden, der mehr Ahnung vom Netbeans-GUI-Builder hat um dir da zu helfen, denn ich weiß nur dass es ihn gibt und habe ihn selbst nie eingesetzt.


    Grüße & Gute Nacht
    Carron

    EDIT: dass das in einem anderen Package nicht funktioniert hat, kann daran liegen, dass er dann keinen Zugriff mehr auf die hinterlegten Bilder hat. Dann müsstest du allerdings eine NullPointerException aus einem der beiden new ImageIcon()-Aufrufe bekommen.
    Geändert von Carron (12.06.10 um 00:59 Uhr)
     

Ähnliche Themen

  1. JTree in JScrollPane: JScrollPane automatisch anpassen
    Von Guadrion im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.06.10, 09:12
  2. [Swing] JList verschwindet wenn man sie in ein JScrollPane verpackt
    Von Prophet05 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 06.06.09, 18:39
  3. javax.swing.plaf.FontUIResource: Woher lädt Swing den Font
    Von Deficiency im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 17.01.08, 08:38
  4. Einbinden der MFC-RichTextBox in eine Swing-JScrollPane
    Von testalucida im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 09.12.06, 12:24
  5. Extreme Swing / Schicke Effekte mit Swing
    Von Thomas Darimont im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 30.12.05, 02:32