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 ->
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)
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.
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
/** * @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();
// 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 PictureList( ) { this.setLayout(new BorderLayout( )); list = new JList(label); JScrollPane pane = new JScrollPane(list); JButton button = new JButton("Send Picture"); button.addActionListener(new PrintListener( ));
// 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;
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.