MVC, Views aufrufen

Status
Nicht offen für weitere Antworten.

AndreasS

Aktives Mitglied
Hallo,

habe ein Problem mit dem Aufrufen meiner Views. Ich möchte eine Benutzeroberfläche erstellen mit 2 Panels, auf dem einen die Labels auf dem anderen Panel die Textfelder. Irgendwie schaff ich das nicht!
Hier mal der Code:
Code:
//file: SteuerMVC.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SteuerMVC {
	
	JPanel mainP; 
	JPanel labelP;
	JPanel textP;
	
	//TaxModel
	SteuerModel smodel;
	
	//TaxTextView
	SteuerTextView textView;
	
	//TaxLabelView
	SteuerLabelView labelView;
	 // Constructor 
    public SteuerMVC() { 
        // Create containers
        mainP = new JPanel(); 
        labelP = new JPanel();
        textP = new JPanel();

        //Layout GridLayout
        mainP.setLayout(new GridLayout(0,2));

        //Add the panels/label/button to the container 
		mainP.add(labelP);
		mainP.add(textP);
        
        labelP.setLayout(null);
		textP.setLayout(null);
		
		smodel = new SteuerModel();
		labelView = new SteuerLabelView(smodel,labelP);
		textView = new SteuerTextView(smodel,textP);

		'hab ich mal eingefügt, wegen der 2 panels
		labelP.setBackground(Color.blue);
		textP.setBackground(Color.white);
	}
	public static void main(String[] args) { 
        // Create a frame as main application window 
        // with the specified title 
        JFrame mainF = new JFrame("Steuerberechnung"); 
        
        // Make the application exit when the window is closed. 
        mainF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Set width and height of the main window 
        mainF.setLocation(100, 100); 
        mainF.setSize(550, 550);//pass the width and height 

        // Create a MouseDrag object 
        SteuerMVC steuer = new SteuerMVC(); 
		
        // Add the main panel to the frame's content pane 
        mainF.getContentPane().add(steuer.mainP);
        mainF.setVisible(true); 
    } 
}


//file: SteuerLabelView.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SteuerLabelView {
	//view data
	//textfields for showing data
	private JLabel showAnlageLB;
	private JLabel showDauerLB;
	private JLabel showZinssatzLB;
	
	JPanel mainP;
	//reference to corresponding model
	SteuerModel smodel;
	
	//constructor
	public SteuerLabelView(SteuerModel s, Container labelP){
		//set reference to corresponding model
		//smodel = s;
		JPanel mainP = new JPanel();
		//create textfields showing the model value
		showAnlageLB = new JLabel("Betrag in €:");
		showDauerLB = new JLabel("Dauer:");
		showZinssatzLB = new JLabel("Zinssatz:");
		
		//add the textfields to the parents
		mainP.add(showAnlageLB);
		mainP.add(showDauerLB);
		mainP.add(showZinssatzLB);
	}
	
	//main method
	public static void main(String[] args) {
		//create a frame as the main window
	}		
}
Habe nur mal die 2 Klassen eingefügt. Die fürs Hauptprogramm und die für den LabelView. Also eine View-Klasse.
Irgendwie muss ich ja die Views an das Hauptprogramm übergeben.

Vielleicht kann mir ja einer von Euch helfen!
Bin für jede Hilfe dankbar.

Gruß Andi 🙁
 
Ich versteh dein Problem nicht ganz.
Siehst du keine Labels? Das könnte daran liegen:

Code:
// 0 ist nicht gut
// mainP.setLayout(new GridLayout(0,2));  

// 1 ist besser
mainP.setLayout(new GridLayout(1,2));
 
Hi,

danke erstmal, dass du mir helfen willst. Mein problem ist folgendes: Ich kann meine Views irgendwie nicht in meinem Hauptprogramm (SteuerMVC) aufrufen. In SteuerMVC habe ich zwei Panels dafür erstellt. Auf dem einen sind die Labels und auf dem anderen sollen die Textfelder dargestellt werden. Darunter noch 2 Buttons.
So sollte es aussehen:

Code:
    |--------------------------------------------------|
    |                                |                                
    |                                |                                
    |  Label                       |   Textfield                
    |                                |                                
    |                                |                                
    |  Label                       |   Textfield                
    |                                |                                
    |                                |                                
    |  Label                       |   Textfield                
    |                                |                                
    |                                |                                
    |----------------------------------------------------|
    |                                                                 
    |    Button                        Button                   
    |                                                                 
    -----------------------------------------------------|

Da die Labels/Textfelder ja als private in den Views deklariert sind, schaff ich es leider nicht, sie in SteuerMVC aufzurufen.

Vielleicht kannst du mir ja nochmals helfen? Oder gibts eventuell irgendwelche Beispiele im Internet? Habe leider nichts gefunden und weiß nicht mehr weiter...

Gruß Andi
 
Ach so.

Du könntest Getter und Setter schreiben, das sieht dann so aus:

Code:
public class TextView{
  private JTextField field;

  public void setText( String text ){
    field.setText( text );
  }
  public String getText(){
    return field.getText();
  }

  public JTextField getTextField(){
    return field;
  }
}

Code:
// die Methode ist irgendwo im Code versteckt
public void blupp(){
  TextView view = ...
  view.setText( "Hallo du da" );  // setzt den Text des Textfeldes.
}

Wobei der letzte Getter das Textfeld zurückgibt. (Das ist eigentlich nicht so gut, andere Klassen könnten da Dinge umstellen, die nicht sein sollten. Auch ist das schon fast ein bisschen zu starr: wenn du mal etwas anderes als ein Textfeld benutzen möchtest, kommt es bei dem letzten Getter zu Problemen. Also versuch wann immer möglich die obere Variante zu benutzen).
 
Hi,

leider wars das nicht ganz. Ich möchte lediglich die Views in SteuerMVC aufrufen. Ich denke ich muss über den Constructor in SteuerMVC die Views aufrufen, mit den Parametern aus LableView bzw. TextView.
In SteuerMVC habe ich die Panels auf denen ich die Views darstellen will. D.h. in labelPanel sollen die Labels aus LabelView dargestellt werden und auf textPanel die aus der TextView.

Vielleicht hilfst du mir nochmals? Habe immer ein bischen Probleme, mein Problem in Worte zu fassen...

Gruß Andi
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben