Avatar billede jomfru78 Nybegynder
20. december 2003 - 15:01 Der er 6 kommentarer

visning af JTextArea giver NullPointerExecption

Hep

Sidder og bakser med at vise et JTextArea i en JFrame. Har lavet en klasse der opretter JTextArea oprettet en JScrollpane adder JTextArea til JSCrollpane returnere JSCrollPane til min hovdeklasse GUI{} hvori jeg tilføjer den returnede JScrollpane til mainframe's contentPane.Koden kan findes her ->

http://java.mediabits.org/LiveTool/GUI.java
Avatar billede arne_v Ekspert
20. december 2003 - 15:24 #1
Hvad gør du for at få fejlen ?

Hvilken linie sker den i ?
Avatar billede jomfru78 Nybegynder
20. december 2003 - 15:33 #2
Det er i selve kompileringen at fejlen sker. Her er outputtet fra compileren

Exception in thread "main" java.lang.ExceptionInInitializerError: java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:341)
    at java.awt.Container.add(Container.java:267)
    at GUI.<init>(GUI.java:54)
    at ModelController.<clinit>(ModelController.java:20)
Avatar billede conrad Nybegynder
20. december 2003 - 17:32 #3
public GUI() {

        Frame mainFrame = new Frame();
        skal være
mainFrame = new Frame();

ellers får du ikke initialiseret klassens mainFrame men istedet skabt en mainFrame som kun har scope i Gui() konstruktoren
Avatar billede conrad Nybegynder
20. december 2003 - 21:55 #4
Jeg ved ikke om det virker men det er en MEGET dårlig ide og lave egne klasser som hedder det samme som standard java klasser. Det gør i bl.a med Frame og Component.
Avatar billede _carsten Nybegynder
22. december 2003 - 09:17 #5
Har rettet lidt i klasserne Menu, GUI og textArea
Klassen Frame har jeg smidt ud, den kunne jeg ikke finde behov for, og så har jeg selvfølgelig rettet klassenavne

Jeg har ikke kommenteret det, hvilket jeg nok burde have gjort, da jeg har lavet en del ændringer - så du må bare spørge

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.File;
import javax.swing.ImageIcon;

/**
* @author Gruppe 1 Hold 1
*
* To change this generated comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/

public class GUI extends JFrame {
    public static final int WIDTH = 600;
    public static final int HEIGHT = 600;
    private MyComponent comp;
    private MyMenu myMenu;
    private ImagePanel panel;
    private MyTextArea myTextArea;
    private PictureList myPictureList;
    private JPanel myPanel;

    public GUI() {
        setTitle("LiveTool");
        setSize(WIDTH, HEIGHT);
        comp = new MyComponent("LiveTool");
        myMenu = new MyMenu();
        panel = new ImagePanel();
        myTextArea = new MyTextArea();
        myPictureList = new PictureList();
        myPanel = new JPanel();

        setJMenuBar(myMenu);

    add(myPictureList,BorderLayout.EAST);
    add(myTextArea,BorderLayout.WEST);
    add(myPanel, BorderLayout.CENTER);
        add(comp, BorderLayout.SOUTH);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        show();
    }

    public Vector getPics() {
        return comp.getPics();
    }
   
    public static void main(String[] args){
        new GUI();
    }
}

class MyComponent extends JComponent implements MouseMotionListener, ActionListener {
    private JFileChooser fileChooser;
    private JButton pictureButton;
    private JButton textButton;
    private JButton loadPictureButton;
    private JButton loadTextButton;
   
    public MyComponent(String message) {
    loadTextButton = new JButton("Load Text");
        textButton = new JButton("Send Text");
        loadPictureButton = new JButton("Load Picture");
    pictureButton = new JButton("Send Picture");
        fileChooser = new JFileChooser();
        String[] pics = new String[] {"gif", "jpg", "tif"};
        //fileChooser.addChoosableFileFilter(new SimpleFileFilter(pics,"Images (*.gif, *.jpg, *.tif)"));
        setLayout(new FlowLayout());
    add(loadTextButton);
    add(loadPictureButton);

        pictureButton.addActionListener(this);
        textButton.addActionListener(this);
        loadPictureButton.addActionListener(this);
        addMouseMotionListener(this);

        // two varibles containing the Image things.
        vectorNumber = 0;
    }

    public void mouseDragged(MouseEvent e) {
        repaint();
    }

    public void mouseMoved(MouseEvent e) {
        //System.out.println("the mouse moves");
    }
    public void actionPerformed(ActionEvent e) {
        // Did somebody push our button?
        if (e.getSource() == pictureButton) {
            System.out.println("Picture is send!");
        } else if (e.getSource() == textButton) {
            System.out.println("Text is send!");
        }  else if (e.getSource() == loadPictureButton) {
            //System.out.println("Load Pictures");
            getPics();
        }
    }

    private Vector filesV;

    /**
    * Opens a dialog for selecting one or more Pictures.
    *
    * @return Vector The Picture vector
    */
    public Vector getPics() {


        Vector filesV = null;
        if ( fileChooser.showOpenDialog( null ) == JFileChooser.APPROVE_OPTION ) {
            fileChooser.setMultiSelectionEnabled(true);
            File[] files = fileChooser.getSelectedFiles();
            System.out.println(files.toString());
            filesV = new Vector();
            for ( int i = 0; i < files.length; i++ ) {
                System.out.println("i er lig med " +i);
                filesV.add( files[i] );
            }
            System.out.println("" + filesV.size() + " " + filesV.toString());

        }
        return filesV;
    }

    //private List imageContainer;
    private int vectorNumber;
}


/**
*  A panel that displays a tiled image
*/
class ImagePanel extends JPanel {
    /**
    * Construct a empty ImagePanel
    */
    public ImagePanel () {
        setSize(100, 100);
    }


    private Image image;

}


class MyTextArea extends JTextArea{
    private JScrollPane scroll;

    public MyTextArea(){
        super("Here you should place the text that you want to send....");
        setLineWrap(true);
        setWrapStyleWord(true);
        scroll = new JScrollPane(this);
        setSize(150,400);
        addKeyListener(new MyListener());
    }
}

class MyListener implements java.awt.event.KeyListener{   
    public void keyPressed(KeyEvent e) {
        System.out.println(e.getKeyChar());
    }
   
    public void keyReleased(KeyEvent e) {
    }
   
    public void keyTyped(KeyEvent e) {
    }
}
   
class PictureList extends JPanel {
    String label[] = { "Picture1","Picture2","Picture3","Picture4","Picture5","Picture6",
                      "Picture7","Picture8","Picture9","Picture10","Picture11" };
    JList list;

    public PictureList( ) {
        this.setLayout(new BorderLayout( ));
        list = new JList(label);
        JScrollPane pane = new JScrollPane(list);
        JButton button = new JButton("Send Picture");
        button.addActionListener(new PrintListener( ));

        add(pane, BorderLayout.CENTER);
        add(button, BorderLayout.SOUTH);
    }

// An inner class to respond to clicks of the Print button
class PrintListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int selected[] = list.getSelectedIndices( );
            System.out.println("Selected Elements:  ");

            for (int i=0; i < selected.length; i++) {
                String element =
                    (String)list.getModel( ).getElementAt(selected[i]);
                System.out.println("  " + element);
            }
        }
    }
}


class MyMenu extends JMenuBar{
    public MyMenu() {
        // create the file menu
        JMenu file = new JMenu("File");
        file.setMnemonic(KeyEvent.VK_U);
        file.add(new JMenuItem("Open"));
        file.add(new JMenuItem("Save"));
        file.add(new JMenuItem("Save As.."));

        // do some fancy stuff with the Quit item
        JMenuItem quitItem = new JMenuItem("Quit");
        quitItem.setMnemonic(KeyEvent.VK_Q);
        quitItem.setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
        quitItem.addActionListener(new
                                  ActionListener(  ) {
                                      public void actionPerformed(ActionEvent e) { System.exit(0); }
                                  });
        file.add(quitItem);

        // create the Settings menu
        JMenu settings = new JMenu("Settings");
        settings.setMnemonic(KeyEvent.VK_S);
        settings.add(new JCheckBoxMenuItem("Low Quality"));
        settings.add(new JCheckBoxMenuItem("Medium Quality"));
        settings.add(new JCheckBoxMenuItem("High Quality", true));
        settings.add(new JCheckBoxMenuItem("Extra High Quality"));

        // create a menu bar
        super.add(file);
        super.add(settings);
    }
}

class ImageEntry {
    private final String title;
    private final String imagePath;
    private ImageIcon image;

    public ImageEntry(String title, String imagePath) {
        this.title = title;
        this.imagePath = imagePath;
    }

    public String getTitle( ) { return title; }
   
    public ImageIcon getImage( ) {
        if (image == null) {
            image = new ImageIcon(imagePath);
        }
        return image;
    }

    // Override standard toString method to give a useful result.
    public String toString( ) { return title; }
}
Avatar billede _carsten Nybegynder
19. januar 2004 - 19:37 #6
Er vi kommet videre ??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester