Klassendesign in Packages

Status
Nicht offen für weitere Antworten.

raven

Bekanntes Mitglied
Hallo,

Ich habe vor mir eine kleine Sammlung von Paketen anzulegen. Nur ich weiß nicht wie ich meine Klasse strukturieren soll. Also ich weiß es schon, nur nicht wie ich das mit der Parameterübergabe im konstrukor machen soll. Kuckt euch mal mein Versuch an!

Code:
package com.graphics.JTitleWindow

import javax.swing.*;

public class JTitleWindow extends JWindow {

	String title = "";

	int xPoint = 0;
	int yPoint = 0;

	int xSize = 0;
	int ySize = 0;

	JTitleWindow(int xPoint, int yPoint, int xSize, int ySize) {
		this.xPoint = xPoint;
		this.yPoint = yPoint;
		this.xSize = xSize;
		this.ySize = ySize;
	}

	JTitleWindow(String title, int xPoint, int yPoint, int xSize, int ySize) {
		this.title = title;
		this.xPoint = xPoint;
		this.yPoint = yPoint;
		this.xSize = xSize;
		this.ySize = ySize;
	}

	public static void main(String[] strArgs) {
		JTitleWindow titleWindow = new JTitleWindow();
	}
}

Wie ist das nun bei der Parameterübergabe im Konstruktor. Diese klasse wird ja von nirgens anders aufgerufen. Ich will das wie bei den JButton machen. Dem man den String als title übergibt. Aber wie, weil meins ist ja eine eigenständige Klasse. Ich hoffe ihr wißt wie ich das meine. Hoffe auf eure Hilfe ...

Fröhliche Weihnachten noch !!! :D
 
R

Roar

Gast
package com.graphics.JTitleWindow wird sich doch sowieso schonmal nicht kompilieren lassen. und com.graphics als packagename ? :bahnhof:

naja ladde:
Diese klasse wird ja von nirgens anders aufgerufen.
wozu is sie dann da ???:L

Dem man den String als title übergibt. Aber wie, weil meins ist ja eine eigenständige Klasse. Ich hoffe ihr wißt wie ich das meine.
ne weiß ich nich :D du übergibst dem konstruktor doch einen string, was willst du noch amchen?
 

raven

Bekanntes Mitglied
Ne das sowas werden wie ein JButton, dem man nimmt wenn man es brauch. Den Button übergebe ich doch ein String.

man importiert javax.swing.*; und kann den JButton benutzen.

So zum beispiel:

JButton = new JButton("Hallo");

So will ich das bei mein JTitleWindow machen. Ich importiere mein package am anfang der klasse und kann dan so:

JTitleWindow = new JTitleWindow("Title", 100, 200);

ein neue INstanz von mein Window erzeugen. und anzeigen lassen. Nur mit ich das teil nicht immer neu programmieren brauch. Natürlich brauch mein JTitleWindow jetzt auch ein Konstruktor mit den ganzen Parametern. Aber das funktioniert ja eben nicht. Ich weiß das das von irgendwoher aufgerufen werden muss aber ich weiß nicht von wo, weil das ja nur eine Klasse für das Window ist.

Hoffe mich verstehen einige ...
 

Illuvatar

Top Contributor
Nicht wirklich.... aber ich zeig dir einfach mal ein Beispiel:

Code:
package com.graphics; //Nur den package Namen angeben

import javax.swing.*;

public class JTitleWindow extends JWindow
{
   private String title = ""; //Membervariablen gerade in solchen "Helfer-Klassen" immer private --> höhere Kapselung

   public String getTitle() //Zugriff über getter/setter
   {
      return title;
   }
   public void setTitle(String s)
   {
      if (s != null){ //Da Zugriff nur über setter möglich, kann so einer Exception schon jetzt gegengewirkt werden
         title = s;
         repaint();
      }
   }

   private int xPoint = 0;
   private int yPoint = 0;

   private int xSize = 0;
   private int ySize = 0;

   public JTitleWindow(int xPoint, int yPoint, int xSize, int ySize) //Konstruktoren public, sonst kannst du sie von außen ja nicht verwenden
   {
      this.xPoint = xPoint;
      this.yPoint = yPoint;
      this.xSize = xSize;
      this.ySize = ySize;
      setLocation (xPoint, yPoint);
      setSize (xSize, ySize);
   }

   public JTitleWindow(String title, int xPoint, int yPoint, int xSize, int ySize)
   {
      this (xPoint, yPoint, xSize, ySize); //Code aus anderem Konstruktor wiederverwenden
      this.title = title;
   }

   public void paint (java.awt.Graphics g) //geben wir der Sache noch einen Sinn
   {
      g.setColor (java.awt.Color.WHITE);
      g.fillRect (0, 0, xSize, ySize);
      g.setColor (java.awt.Color.BLACK);
      int width = g.getFontMetrics().stringWidth(title);
      g.drawString (title, xSize / 2 - width / 2, ySize / 2);
   }

   public static void main(String[] strArgs) {  //Der Code könnte jetzt auch wo ganz anderes stehen
      JTitleWindow titleWindow = new JTitleWindow("Tolles Fenster", 100, 100, 300, 200);
      titleWindow.setVisible (true);
      try{
         Thread.sleep (2000);
      }catch (Exception e){}
      titleWindow.setTitle ("Neuer Titel");
   }
}

Edit: Code korrigiert
 

raven

Bekanntes Mitglied
Ja gut danke erstmal für deine Hilfe. Kuck mal hier:

Zeile 5
Code:
The serializable class JTitleWindow does not declare a static final serialVersionUID field of type long.

Bringt der mir folgenden Satz. was für eine "static final serialVersionUID" vom type long.

Der Fehler ist mir vorhin schon bei meinen Code aufgefallen. Jetzt habe cih aber dein Beispiel übernommen.
Code:
ackage com.graphics;

import javax.swing.*;

public class JTitleWindow extends JWindow {

   private String title = "";

   private int xPoint = 0;
   private int yPoint = 0;

   private int xSize = 0;
   private int ySize = 0;

   public JTitleWindow(int xPoint, int yPoint, int xSize, int ySize) {
      this.xPoint = xPoint;
      this.yPoint = yPoint;
      this.xSize = xSize;
      this.ySize = ySize;

      setLocation (xPoint, yPoint);
      setSize (xSize, ySize);
   }

   public JTitleWindow(String title, int xPoint, int yPoint, int xSize, int ySize) {
      this (xPoint, yPoint, xSize, ySize);
      this.title = title;
   }

   public void paint(java.awt.Graphics g) {
      int width = g.getFontMetrics().stringWidth(title);
      g.drawString (title, xSize / 2 - width / 2, ySize / 2);
   }

   public static void main(String[] strArgs) {  //Der Code könnte jetzt auch wo ganz anderes stehen
      JTitleWindow titleWindow = new JTitleWindow("Tolles Fenster", 100, 100, 300, 200);
      titleWindow.setVisible (true);
      try{
         Thread.sleep (2000);
      }catch (Exception e){}
      titleWindow.setTitle ("Neuer Titel");
   } 
}
 
B

bygones

Gast
das ist kein fehler, sondern eine Warnung. Es geht darum, dass man in java objekte serialisieren kann, um dies problemlos machen zu können benötigt java eine sogenannte serialVersionUID (wie genau das abläuft ist eher unwichtig).

entweder du ignorierst die warnung, oder du schreibst eine beliebige long variable mit dem Namen serialVersionUID in deine klasse
 

L-ectron-X

Gesperrter Benutzer
Du benutzt am besten auch mal die Forumsuche, dazu gibts mehrere Beiträge, die das wie und warum erklären.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
W Frage zu Klassendesign und Test mit Mockito Allgemeine Java-Themen 5
G Problem mit Klassendesign Allgemeine Java-Themen 6
T Klassendesign - Hierarchie Ebenen Allgemeine Java-Themen 15
G klassendesign. aber wie (sinnvoll)? Allgemeine Java-Themen 8
T javax.script (JavaScript): Nicht-JRE-Packages importieren/nutzen Allgemeine Java-Themen 4
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
G Manifest mit Packages versehen Allgemeine Java-Themen 2
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
D Packages in ausführbaren Jars Allgemeine Java-Themen 4
Apo Zur Laufzeit Klassen mit Packages laden? Allgemeine Java-Themen 2
D Inhalt eines Packages im Code verarbeiten Allgemeine Java-Themen 18
@ Javadoc: Kurzbeschreibung Packages Allgemeine Java-Themen 10
F packages, public methods, assertions und argumentchecking. Allgemeine Java-Themen 3
L Fehlende Teile des javax Packages Allgemeine Java-Themen 3
J Packages in Java Allgemeine Java-Themen 2
M auf files des packages zugreifen Allgemeine Java-Themen 2
B Fremde Packages benutzen? Allgemeine Java-Themen 11
G Aufbau der Packages Allgemeine Java-Themen 3
B Installation neuer Packages Allgemeine Java-Themen 8
D defaultpackage-Klassen in anderen Packages aufrufen Allgemeine Java-Themen 2
L Zugriffsschutz: protected und packages Allgemeine Java-Themen 6
M Classen eines Packages ermitteln Allgemeine Java-Themen 12
M problem mit packages - falsche einstellungen? Allgemeine Java-Themen 2
T Packages Allgemeine Java-Themen 9
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10
J jar Datei mit Packages Allgemeine Java-Themen 30
A geladene Packages ermitteln Allgemeine Java-Themen 2
M Java2exe Externe Packages einbinden! .JAR und sowas Allgemeine Java-Themen 7
G Classpath, Packages und Import Allgemeine Java-Themen 3
I Liste aller bekannten Packages Allgemeine Java-Themen 6
H Problem mit Packages Allgemeine Java-Themen 11
Bionic Packages einbinden ?! Allgemeine Java-Themen 4
S outlook ähnliche leiste und sonstige packages Allgemeine Java-Themen 2
A Packages Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben