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)
 

strußi

Top Contributor
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte drawLine Methode der Graphics Klasse Java Basics - Anfänger-Themen 2
B drawLine in eine Schleife packen Java Basics - Anfänger-Themen 2
W drawLine(...) - Linie soll nur begrenzt lang sein Java Basics - Anfänger-Themen 9
B Drawline wird auf JFrame nicht angezeigt Java Basics - Anfänger-Themen 3
F g.drawLine in g 2D casten Java Basics - Anfänger-Themen 5
F Simpler DrawLine - Befehl!? Java Basics - Anfänger-Themen 9
N DrawLine Java Basics - Anfänger-Themen 7
F g.drawLine Farbübergänge Java Basics - Anfänger-Themen 4
G drawLine + Linienstärke Java Basics - Anfänger-Themen 2
N NullPointerException in "g.drawLine(x, y, x, y);" Java Basics - Anfänger-Themen 6
G g.drawLine arbeitet sehr ungenau. Java Basics - Anfänger-Themen 4
Makaan_Neo Eigene DrawLine Methode mit Farbverlauf Java Basics - Anfänger-Themen 5
M AWT -eigene DrawLine Methode mit Farbverlauf in der Linie ? Java Basics - Anfänger-Themen 2
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
M BorderLayout, 2Panels, EAST wird nicht angezeigt ?? Java Basics - Anfänger-Themen 2
I In der Mitte eines Frames mit BorderLayout etwas malen Java Basics - Anfänger-Themen 7
F Content Pane / BorderLayout Java Basics - Anfänger-Themen 2
G Konstruktor, BorderLayout nimmt Component nicht auf Java Basics - Anfänger-Themen 2
A Taschenrechner-GUI mit BorderLayout? Java Basics - Anfänger-Themen 6
M BorderLayout zickt! Ein Panel versteckt das andere! Java Basics - Anfänger-Themen 6
M JPanel, JButtons, Borderlayout Java Basics - Anfänger-Themen 8
P BorderLayout Java Basics - Anfänger-Themen 11
O AWT, Dubiose Ausgabe BorderLayout Java Basics - Anfänger-Themen 2
Antoras Layoutprobleme mit Box- und BorderLayout Java Basics - Anfänger-Themen 13
Spin Borderlayout Java Basics - Anfänger-Themen 4
A Problem mit BorderLayout und null-Layout Java Basics - Anfänger-Themen 5
G Frage zum BorderLayout Java Basics - Anfänger-Themen 2
kulturfenster BorderLayout Java Basics - Anfänger-Themen 3
G aktueller Panel, der in BorderLayout.SOUTH angeordnet ist Java Basics - Anfänger-Themen 11
S Button und BorderLayout Java Basics - Anfänger-Themen 2
P BorderLayout und Center fkt. nicht Java Basics - Anfänger-Themen 4
R BorderLayout macht meine Zeichnung kaputt Java Basics - Anfänger-Themen 14
F Kurze Frage: JLabel in BorderLayout einfügen Java Basics - Anfänger-Themen 2
S BorderLayout Ausrichtung Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben