Zugriff auf methode!

Spaceman85

Mitglied
Ich habe 2 Packages wobei die Klassen in den beiden Packages von verschiedenen Interfaces, die den beiden Packages übergeordnet sind, Methoden implementieren!

Nun möchte ich von einer Klasse aus Package1 auf eine implementierte Methode des 2. Packages zugreifen. Via Punktnotaion wird mir die Methode angezeigt, doch danerhalte ich später einen bzw sehr viele Laufzeitfehler! Die Methode an sich ist korrekt!

Die Methode rufe ich inerhalb der actionPerformed() des P1 auf.
 

zerix

Hausmeister
Moderator
Hallo,

dann kann ich nur sagen, dass du einen Fehler gemacht hast. ;-)

Wenn du vielleicht mal etwas Code postest und auch die Fehlermeldungen postest, kann ich dir vielleicht etwas mehr sagen.
Da deine Aussagen nicht sehr genau sind, kann ich dir auch nicht genau helfen. ;-)

MFG

Sascha
 

Spaceman85

Mitglied
Code:
public class BoardControllerImpl implements de.miniopoly.Field, de.miniopoly.BoardController{
	  Field[] fields = new Field[41];
	  int c;
	  BoardViewImpl view;
	
	 public BoardControllerImpl(){
	
	}
.
.
.
public void actionPerformed(ActionEvent e) {
	System.out.println("Gewürfelt!");
	view.updateDices(1, 5);  //Hier der Fehler!
	}

Code:
public class BoardViewImpl extends JFrame implements de.miniopoly.BoardView{

		Field[] fields = new Field[41];
		int c;
		JTextField start = new JTextField(10);
		JTextArea area = new JTextArea(3,5);
		JToggleButton badstraße = new JToggleButton("Badstraße");
		JButton diceBtn = new JButton("Würfeln");
		BoardController control;
		JLabel dice1 = new JLabel();
		JLabel dice2 = new JLabel();
		
		public BoardViewImpl(BoardController control){
			super("Miniopoly");
		
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.control=control;
			diceBtn.addActionListener(control);
			dice1.setIcon(new ImageIcon("res/dice4.gif"));
			dice2.setIcon(new ImageIcon("res/dice2.gif"));
			JPanel pane = new JPanel();
			JLabel[] label = new JLabel[11];
			for (int i=0;i<label.length;i++){
				label[1]=new JLabel(" Test ");
				pane.add(label[1]);
			}
			JPanel center= new JPanel();
			
			center.add(dice1);
			center.add(dice2);
			center.add(diceBtn);
			BorderLayout bord = new BorderLayout();
			setLayout(bord);
			add("South", pane);
			add("Center", center);
			
			setSize(700,600);
			setVisible(true);
		}
		/*public void addDiceButtonListener(ActionListener dice){
			diceBtn.addActionListener(dice); 
			}*/

	
	@Override
	public void updateDices(int firstDice, int secondDice) {
		// TODO Auto-generated method stub
		switch(firstDice){
			case 1: dice1.setIcon(new ImageIcon("res/Dice1.gif"));
				break;
			case 2: dice1.setIcon(new ImageIcon("res/Dice2.gif"));
				break;
			case 3: dice1.setIcon(new ImageIcon("res/Dice3.gif"));
				break;
			case 4: dice1.setIcon(new ImageIcon("res/Dice4.gif"));
				break;
			case 5: dice1.setIcon(new ImageIcon("res/Dice5.gif"));
				break;
			case 6: dice1.setIcon(new ImageIcon("res/Dice6.gif"));
				break;
		}
		switch(secondDice){
		case 1: dice1.setIcon(new ImageIcon("res/Dice1.gif"));
			break;
		case 2: dice1.setIcon(new ImageIcon("res/Dice2.gif"));
			break;
		case 3: dice1.setIcon(new ImageIcon("res/Dice3.gif"));
			break;
		case 4: dice1.setIcon(new ImageIcon("res/Dice4.gif"));
			break;
		case 5: dice1.setIcon(new ImageIcon("res/Dice5.gif"));
			break;
		case 6: dice1.setIcon(new ImageIcon("res/Dice6.gif"));
			break;
	}
	}
 

Spaceman85

Mitglied
Kann ich das so machen?

BoardViewImpl view = new BoardViewImpl(this);

Wenn ich es so mache führt er die Methode nicht aus aber es kommt auch keine fehlermeldung!

Das problem ist das die hauptklasse MainMethode vorgegeben ist
Code:
 public static void main(String[] args) throws Exception {
        BoardController controller = new BoardControllerImpl();
        BoardView view = new BoardViewImpl(controller);
        controller.setView(view);
    }

Ansonsten kommt folgende Meldung:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at de.miniopoly.controller.BoardControllerImpl.actionPerformed(BoardControllerImpl.java:132)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 
Zuletzt bearbeitet:

Matze

Weltenwanderer
Meinst du der Inhalt ist fest vorgegeben?
Was mir noch auffällt: Du leg die Variable view NUR in der Main-Methode an, d.h. woanders ist sie im Code gar nicht bekannt ;)
 
Zuletzt bearbeitet:

Spaceman85

Mitglied
Genau, das ist ja vorgegeben so!
Ich habe ja noch eine variable in der Klasse BoardControllerImpl ertsellt wie ich gerade geschrieben habe!

Ich habe keine Excepion wie man ja auch sieht!

Die Frage ist einfach wie kann ich generell auf diese Methode zugreifen?