Drawline mit Borderlayout

Basti90

Mitglied
Hallo zusammen,

Ich will zwei linien zur Unterteilung meiner Gui einfügen.
Das ganze habe ich bereits ohne Layout gemacht da hat es wunderbar funktioniert, jetzt mit Borderlayout wird keine Linie mehr angezeigt - was mache ich falsch?
hier ist mein Code
Java:
public class anzeige extends JPanel {
	
	

	public anzeige() {
		setSize(600, 600);
		setLayout(new BorderLayout());
		
		add(new Panel(),BorderLayout.NORTH);
		add(new Panel,BorderLayout.CENTER);
 		add(new Panel,BorderLayout.SOUTH);
		
	}
	@Override
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		Dimension panelsize= this.getSize();
		int height=panelsize.height;
		g.drawLine(0, height*2/3,panelsize.width, height*2/3);
		g.drawLine(0, height*1/3,panelsize.width,height*1/3);
		
	}

Die komponenten werden normal angezeigt aber es werden keine Linien angezeigt. In meinem Beispiel ohne Layout funktioniert es einwandfrei (gleicher PainComponent code)
 
Servus @all,

hab ne ähnliche Frage, blos ist ist meine Anzeigefläche etwas größer

Hab nen GridBagLayout hinterlegt.
Also: ich habe bis jetzte das grüne/graue ( siehe Anhang) Etwas geschrieben, das zur Laufzeit aus einer vorgelagerten GUI seine infos bekommt (Kopfdaten)
Das Panel zwei besteht aus 3 Teilen die Spalte last ist einfach ein JLabel[], dann Folgt ein JTextField[][] an dem ein JLabel[][] angeschlossen wird.^^ gbl sei dank ist das möglich.

Nun die Frage: wie bekomme ich die roten Linien rein, damit es noch ein bisschen schöner ist?

Damit es nachvollziehbar ist hier noch der gecleante code

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

/**
 * Klasse zur Erstellung der Eingabemaske für das Treppenstufenverfahren
 * @author Christian
 */
public class TreppenstufenGUI implements FocusListener {
  public static void main( String[] args){
    TreppenstufenGUI tsg =new TreppenstufenGUI();
    tsg.start();
  }
  
  JFrame frame = new JFrame( "Treppenstufenverfahren - Eingabemaske"); //Fenster erzeugen
  JPanel panel =new JPanel();
  JPanel kopfPanel = new JPanel(); //Platte für den Inhalt des Fensters
  JPanel bodyPanel =new JPanel();
  JPanel auswertPanel =new JPanel();
  JPanel buttonPanel =new JPanel();
  
  
  static byte horizonte =10;
  static byte probenzahl =15;
  static double schrittweite =4;
  static double kleinstesLast =100;
  static byte typFuerAuswertung;
  
  static final byte textfieldLength =8;
  static JTextField durchT =new JTextField( textfieldLength);
  static JTextField bruchT =new JTextField( textfieldLength);
  static JTextField probenanzahlT =new JTextField( textfieldLength);
  static JTextField schrittweiteT =new JTextField( textfieldLength);
  static JTextField schrittanzahlT =new JTextField( textfieldLength);
  static JTextField kleinstesLastT =new JTextField( textfieldLength);
  
  static JLabel[][] ergLab;
  JTextField[][] text;
  JLabel[] last;
  
  static JLabel durchlaeufer =new JLabel( "");
  static JLabel brueche =new JLabel( "");
  static JLabel auswerteTyp =new JLabel( " - ");
  static JLabel auswerteKontrolle =new JLabel( " - ");
  static JLabel auswerteColorTextLabel;
  static JLabel auswerteStabw =new JLabel( " - ");
  static JLabel auswerteSigma= new JLabel( " - ");
  static JLabel sigmaLabel = new JLabel( "Sigma: ");
  
  
  /**
  * Method für die Erzeugung der Oberfläche
  */
  public void start(){
    // Muss hier erzeugt werden, da es noch initialisiert werden muss
    ergLab =new JLabel[ horizonte +2][ 4];
    kopf();
    body();
    auswertung();
    button();
    
    Box b =Box.createVerticalBox();
    b.add( kopfPanel);
    b.add( bodyPanel);
    b.add( auswertPanel);
    b.add( buttonPanel);
    panel.add( b);
    
    JScrollPane jsp =new JScrollPane( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    jsp.setViewportView( panel); //Panel an ScrollPane übergeben
    frame.getContentPane().add( jsp); //ScrollPane, dass das Panel hält an Frame übergeben
    jsp.setVisible(true); //ScrollPane sichtbar machen
    
    
    frame.add( jsp);
    frame.setSize( 1000, 650); //Fenstergröße bestimmen
    frame.setResizable( true); //Feste größe des Fensters festlengen
    frame.setVisible( true); //Fenster sichtbar machen
    frame.setLocationRelativeTo( null); //Auf Bildschirm zentrieren
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    frame.pack();
  }
  
  /**
  * Erstellen des Maskenteils mit den Kopfdaten 
  */
  protected void kopf(){
    JLabel durchL =new JLabel( "Durchläufer:"); //Namensschild
    JLabel bruchL =new JLabel( "Brüche:"); //Namensschild
    JLabel probenanzahlL =new JLabel( "Probenanzahl"); //Namensschild
    JLabel schrittweiteL =new JLabel( "Schrittweite d [MPa]"); //Namensschild
    JLabel schrittanzahlL =new JLabel( "Anzahl Niveaus"); //Namensschild
    JLabel kleinstesLastL =new JLabel( "kleinstes Lastniveau [MPa]"); //Namensschild
    
    kopfPanel.setLayout( new GridBagLayout());//Panel ein Layout zuweisen
    GridBagConstraints gbc =new GridBagConstraints(); //Neues GridBagConstraints-Object das verschiede eigenschaften hat
    gbc.insets =new Insets(2, 5, 2, 5); //Ränder um die einzelnen Komponenten
    gbc.anchor =GridBagConstraints.WEST; //Ausrichtung 
    //Zeile 1
    //Durchläufer
    gbc.gridx =0;
    gbc.gridy =0; //Zähler für die Spalten und Zeielen des Rasters
    kopfPanel.add( durchL, gbc); //Object auf das Panel hinzufügen
    gbc.gridx++;
    kopfPanel.add( durchT, gbc);
    
    //Probenanzahl
    gbc.gridx++;
    kopfPanel.add( probenanzahlL, gbc);
    gbc.gridx++;
    kopfPanel.add( probenanzahlT, gbc);
    
    //Zeile 2
    //Brüche
    gbc.gridx =0;
    gbc.gridy++;
    kopfPanel.add( bruchL, gbc);
    gbc.gridx++;
    kopfPanel.add( bruchT, gbc);
    //kleinstes Lastniveau
    gbc.gridx++;
    kopfPanel.add( kleinstesLastL, gbc);
    gbc.gridx++;
    kopfPanel.add( kleinstesLastT, gbc);
    
    //Zeile 3    
    // Schrittweite
    gbc.gridx =2;
    gbc.gridy++;
    kopfPanel.add( schrittweiteL, gbc);
    gbc.gridx++;
    kopfPanel.add( schrittweiteT, gbc);
    
    //Zeile 4
    gbc.gridx =2;
    gbc.gridy++;
    kopfPanel.add( schrittanzahlL, gbc);
    gbc.gridx++;
    kopfPanel.add( schrittanzahlT, gbc);
    
    //Zeile 5
    //Abstandsebene
    gbc.gridx++;
    gbc.gridy++;
    JLabel spacer =new JLabel( " ");
    kopfPanel.add( spacer, gbc);
  }
  
  /**
  * Erstellen des Maskenteils mit den Eingabewerten und Teilweisen Auswertung
  */
  protected void body(){
    last =new JLabel[ horizonte +1];
    last =initLabel( last, kleinstesLast, schrittweite, horizonte);
    text =new JTextField[ horizonte][ probenzahl];
    text =initTextfield( text);
    ergLab =initLabel(ergLab, horizonte);
    
    
    bodyPanel.setLayout( new GridBagLayout());//Panel ein Layout zuweisen
    GridBagConstraints gbc =new GridBagConstraints(); //Neues GridBagConstraints-Object das verschiede eigenschaften hat
    gbc.insets =new Insets(2, 5, 2, 5); //Ränder um die einzelnen Komponenten
    gbc.anchor =GridBagConstraints.WEST; //Ausrichtung 
    gbc.gridx =0;
    gbc.gridy =0;
    //Lasthorizonte
    for( int i =0; i <last.length; i++){
      bodyPanel.add( last[ i], gbc);
      gbc.gridy++;
    }
    //Eingabefelder
    gbc.gridy =1;
    for( int row =0; row <text.length; row++){
      gbc.gridx =1;
      for( int col =0; col <text[ row].length; col++){
        bodyPanel.add( text[ row][ col], gbc);
        gbc.gridx++;
      }
      gbc.gridy++;
    }
    //AuswerteTeil
    gbc.gridx++;
    gbc.gridy =0;
    int ergStart =gbc.gridx++;
    for( int row =0; row <ergLab.length; row++){
      gbc.gridx =ergStart;
      for( int col =0; col <ergLab[ row].length; col++){
        bodyPanel.add( ergLab[ row][ col], gbc);
        gbc.gridx++;
      }
      gbc.gridy++;
    }
  }
  
  /**
  * Erstellen des Maskenteils mit für die Auswertung
  */
  protected void auswertung(){
    JLabel auswertLabel =new JLabel( "Auswertung für : ");
    
    JLabel sumDurchlaeufer =new JLabel( "\u03A3 Durchläufer: ");
    JLabel sumBrueche =new JLabel( "\u03A3 Brüche: ");
    
    
    //        JLabel kontrollLabel =new JLabel( "Kontrolle (F*B -A²)/F² >0,3 : ");
    JLabel kontrollLabel =new JLabel( new ImageIcon( "formel\\treppeKontrolle_.png"));
    auswerteColorTextLabel =new JLabel();
    
    //        JLabel stabwLabel =new JLabel( "s =1,62*d ((F*B -A²)/F² +0,029): ");
    JLabel stabwLabel =new JLabel( new ImageIcon( "formel\\treppeStabw_.png"));
    
    
    auswertPanel.setLayout( new GridBagLayout());//Panel ein Layout zuweisen
    GridBagConstraints gbc =new GridBagConstraints(); //Neues GridBagConstraints-Object das verschiede eigenschaften hat
    gbc.insets =new Insets(2, 5, 2, 5); //Ränder um die einzelnen Komponenten
    gbc.anchor =GridBagConstraints.WEST; //Ausrichtung 
    
    gbc.gridy =0;
    gbc.gridx =0;
    
    auswertPanel.add( auswertLabel, gbc);
    gbc.gridx++;
    auswertPanel.add( auswerteTyp, gbc);
    gbc.gridx++;
    auswertPanel.add( new JLabel( " "), gbc);
    gbc.gridx++;
    auswertPanel.add( sumDurchlaeufer, gbc);
    gbc.gridx++;
    auswertPanel.add( durchlaeufer, gbc);
    auswertPanel.add( new JLabel( " "), gbc);
    gbc.gridx++;
    auswertPanel.add( sumBrueche, gbc);
    gbc.gridx++;
    auswertPanel.add( brueche, gbc);
    
    
    gbc.gridy++;
    gbc.gridx =0;
    auswertPanel.add( kontrollLabel, gbc);
    gbc.gridx++;
    auswertPanel.add( auswerteKontrolle, gbc);
    gbc.gridx++;
    auswertPanel.add( auswerteColorTextLabel, gbc);
    
    gbc.gridy++;
    gbc.gridx =0;
    auswertPanel.add( stabwLabel, gbc);
    gbc.gridx++;
    auswertPanel.add( auswerteStabw, gbc);
    
    gbc.gridy++;
    gbc.gridx =0;
    auswertPanel.add( sigmaLabel, gbc);
    gbc.gridx++;
    auswertPanel.add( auswerteSigma, gbc);
  }
  
  /**
  * Erstellen des ButtonPanel mit einem Button und angehängtem Actionlistener
  * 
  */
  protected void button(){
    JButton calc =new JButton( "Auswerten");
    calc.addActionListener( new ActionListener(){ //ActionListener hinzufügen, ist der Button gedrück oder nicht?
      @Override
      public void actionPerformed( ActionEvent e){//was tun wenn der Button gedrückt wurde
      }
    });
    buttonPanel.add( calc);
  }
  
  
  /**
  * Initialisierung des JLabel[]( Vektors) für die Lastamplituden
  * 
  * @param last Refenez auf das Object, welches initialisiert werden soll
  * @param kleinstesLastniveau Wert für das kleinste Lastniveau aus der Eingabemaske
  * @param schrittweite Wert für die Schrittweite aus der Eingabemaske
  * @param niveauanzahl Wert mit der Anzahl für die Lastniveaus
  * @return Referenz auf das initialisiertes Object
  */
  protected JLabel[] initLabel( JLabel[] last, double kleinstesLastniveau, double schrittweite, byte niveauanzahl){
    last[ 0] =new JLabel( " Last");
    for( int i =last.length-1; i >0; i--){
      double nameval =kleinstesLastniveau +schrittweite *(niveauanzahl-i);
      String name =String.format(" %.2f", nameval);
      last[ i] =new JLabel( name);
    }
    return last;
  }
  
  /**
  * Initalisierung der JTextField[][]( Matrix) für den Eingabebereichs
  * 
  * @param text Refenez auf das Object, welches initialisiert werden soll
  * @return Referenz auf das initialisiertes Object
  */
  protected JTextField[][] initTextfield( JTextField[][] text){
    byte textlength =2;
    for( int row =0; row <text.length; row++){ //Zeilen
      for( int col =0; col <text[ row].length; col++){ //Spalten pro Zeile
        text[ row][ col] =new JTextField( textlength);
        text[ row][ col].addFocusListener( this);
      }
    }
    return text;
  }
  
  /**
  * Initalisierung des JLabel[][]( Matrix) für den Ergebnisteils
  * 
  * @param erg Refenez auf das Object, welches initialisiert werden soll
  * @param horizonte Parameter für die Anzahl der Zeilen 
  * @return Referenz auf das initialisiertes Object
  */
  protected JLabel[][] initLabel( JLabel[][] erg, byte horizonte){
    erg[ 0][ 0] = new JLabel( String.format( "%9s", "i Stufen"));
    erg[ 0][ 1] = new JLabel( String.format( "%9s", "f(i)"));
    erg[ 0][ 2] = new JLabel( String.format( "%9s", "i *f"));
    erg[ 0][ 3] = new JLabel( String.format( "%9s", "i^2 *f"));
    for( int row =1; row <horizonte+1; row++){
      for( int col =0; col <erg[ row-1].length; col++){
        erg[ row][ col] = new JLabel( "");
      }
    }
    for( int row =1; row <horizonte+1; row++){
      erg[ row][ 0].setText( ""+( horizonte -row));
    }
    erg[ horizonte +1][ 0] = new JLabel( String.format( "%-9s", "\u03A3"));
    erg[ horizonte +1][ 1] = new JLabel( String.format( "%9s", "F: "));
    erg[ horizonte +1][ 2] = new JLabel( String.format( "%9s", "A: "));
    erg[ horizonte +1][ 3] = new JLabel( String.format( "%9s", "B:"));
    return erg;
  }
  
  
  
  /**
  * Mehtode die Prüft, ob pro Spalte nur ein Werte eingegeben wurden
  * 
  * @return  boolean, der angibt, ob die Auswertung druchgeführt werden kann oder nicht
  */
  protected boolean validate(){
    boolean ok =true;
    return ok;
  }
  
  
  
  
  
  @Override
  public void focusGained( FocusEvent e){
    //      Auslesen welches objekt der auslößer war
    Object obj =e.getSource();
    if( e.getSource() instanceof JTextField){
      //         Den kompletten inhalt des Textfeldes markieren
      (( JTextField) obj).selectAll();
    } else{}
  }
  @Override
  public void focusLost( FocusEvent e){
    String d =durchT.getText();
    String b =bruchT.getText();
    int rowV=0, colV=0;
    //      Auslesen welches objekt der auslößer war
    Object obj =e.getSource();
    if( e.getSource() instanceof JTextField){
      String inhalt =(( JTextField) obj).getText();
      int hash =obj.hashCode();
      if( inhalt.equals( d) || inhalt.equals( b)){
        //Zeilen und Spaltenwert des Auslösers finden
        for( int rows =0; rows < text.length; rows++){
          for( int cols =0; cols <text[ rows].length; cols++){
            if( text[ rows][ cols].hashCode() ==hash){
              rowV =rows;
              colV =cols;
              System.out.println( "Zeile: "+ rowV + " Spalte: " +colV);
              break;
            } else{}
          }
        }
        
        if( rowV >0 &&rowV <horizonte -1 &&colV <probenzahl-1){
          if( inhalt.equals( d) &&rowV -1 >=0){
            text[ rowV -1][ colV].transferFocus();
          } else if( inhalt.equals( b) &&rowV +1 <horizonte){
            text[ rowV +1][ colV].transferFocus();
          } else{}
        } else if( rowV ==0 &&colV <probenzahl-1){
          if( inhalt.equals( d)){
            System.out.println( "Falsche Eingabe, da oberstes Lastniveau erreicht ist");
            text[ rowV ][ colV +1].transferFocusBackward();
          } else if( inhalt.equals( b)){
            text[ rowV +1][ colV].transferFocus();
          } else{}
        } else if( rowV ==horizonte -1 &&colV <probenzahl-1){
          if( inhalt.equals( b)){
            System.out.println( "Falsche Eingabe, da unterstes Lastniveau erreicht ist");
            text[ rowV][ colV +1].transferFocusBackward();
          } else if( inhalt.equals( d)){
            text[ rowV -1][ colV].transferFocus();
          } else{}
        } else{}
      } else{}
    }    
  }
}
maske.PNG
 

Neue Themen


Zurück
Oben