Announcement

Collapse
No announcement yet.

JPanel erweitern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JPanel erweitern

    Hallo,

    ich habe folgendes Problem. ich erzeuge ein JPanel und setze das Layout
    auf einen GridLayout(6,6) hinterher setze ich die Border mit setBorder(new LineBorder(Color.black,1)); sodaß ich ein Gitter mit linien habe.

    ich möchte jetzt aber eine Wrapperklasse schreiben die mir JPanel erweitert
    z.B MyJPanel mit zusätzlichen attributen. funktioniert auch, allerdings sehe ich die linien nicht mehr, die ich zuvor gesetzt habe. Ich sehe oben links in meinem panel ein quadrat mit fetter umrandung (die linien), als hätten sich die linien in der Ecke verstaut.

    Warum bekomme ich in meiner abgeleiteten Klasse nicht die selbe Ansicht wie in der direkten Klasse JPanel ??

    gruß

    orhan

  • #2
    Hallo,

    welche Methoden von JPanel hast du denn überschrieben?.

    Thoma

    Comment


    • #3
      Hi Thomas,

      ich habe in der Klasse MyJPanel nichts überschrieben, sonder nur zwei attribute x und y hinzugefügt und dazu einfache setter und getter methoden implementiert. Ich habe ein viergewinnt spiel programmiert
      und das spielfeld mit einzelnen panelobjekten realisiert und jedesmal wenn ich auf ein panel clicke setze ich die koordinaten. funktioniert auch alles, aber die linien sehe ich nicht, halt nur links oben, wie bereits beschrieben

      Comment


      • #4
        kannst du mal einen Codeausschnitt posten der die relevanten Methodenaufrufe beinhaltet?.

        Ich kann das irgendwie nicht nachvollziehen

        Comment


        • #5
          Hi Thomas,

          hier beide klassen in vereinfachter Form, wenn du die Main klasse laufen lässt wirst du sehen das oben links in der ecke ein quadrat erscheint.

          package viergewinnt;

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

          public class Frame2 extends JFrame
          {

          public Frame2()
          {
          }
          public static void main(String[] args)
          {
          Frame2 f = new Frame2();
          f.getContentPane().setLayout(new GridLayout(4,4));

          for (int i = 0; i < 16; i++)
          {
          MyJPanel panel = new MyJPanel(1,1);
          panel.setBorder(new LineBorder(Color.black,1));
          f.getContentPane().add(panel);
          }
          f.setSize(100,100);
          f.setVisible(true);
          }
          }

          und hier die Klasse MYJPanel:

          package viergewinnt;

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

          public class MyJPanel extends JPanel
          {

          private int x;
          private int y;
          public MyJPanel()
          {

          }
          public MyJPanel(int x, int y)
          {
          super();
          this.x = x;
          this.y = y;
          }

          public int getX()
          {
          return x;
          }

          public int getY()
          {
          return y;
          }

          }

          ich hoffe das du denn selben effekt auch siehst.

          gruß

          orha

          Comment


          • #6
            Hallo,

            kommentiere die getX ind getY Methoden aus dann gehts.

            Thoma

            Comment


            • #7
              Hi Thomas,

              vielen Dank, das wars. Unglücklicherweise habe ich Methodennamen
              gewählt die in JPanel bereits vorhanden waren und diese somit
              in meiner Klasse überschrieben.

              Gruß

              Orha

              Comment


              • #8
                Guten Morgen,

                das kann man sehr einfach verhindern:
                definiere deine Methoden zunächst als private. Der Compiler wird dich dann darauf hinweisen dass du bei einer gegebenen Methode versuchst
                die Sichtbarkeit zu verändern.

                Thoma

                Comment

                Working...
                X