Zu aller erst guten Tag einmal
Bei mir handelt es sich um einen Umsteiger von C++ nach Java. In C++ besitze ich zumindest grundlegende Kenntnisse... Ich war schon sehr erstaunt was Java mit seiner API alles zu bieten hat, das hat einen ja regelrecht erschlagen :autsch: So kam ich dann jetzt schon mal zu meinem ersten Problem.
Die Aufgabe lautet: Ein Raster über die GUI zu erstellen, welches einer Leiterplatte mit zusammenhängenden Dreierketten entspricht. Die Rastergröße soll durch Anzahl der Zeilen und Spalten übergebbar sein. Soweit so gut.
Dazu habe ich mir ein Fenster der Klasse Frame erstellt, eine ScrollPane sowie ein Objekt von einer Klasse Raster. Diese Klasse Raster ist eine Erweiterung der Klasse Canvas zum Zeichnen meines Rasters. Das Objekt der Klasse Raster füge ich zur ScrollPane hinzu, die ScrollPane habe ich auf das Fenster gesetzt.
Mein Problem dabei: Wenn das Raster größer wird als das Fenster, schneidet er mir alles ab was außerhalb der Maße des Fensters liegt, die ScrollBars werden jedoch nicht angezeigt sodass der Rest über die ScrollBars erreichbar wäre. Wo liegt das Problem?
hier meine Quelltexte:
Für jede Hilfe wäre ich dankbar
:toll:
Bei mir handelt es sich um einen Umsteiger von C++ nach Java. In C++ besitze ich zumindest grundlegende Kenntnisse... Ich war schon sehr erstaunt was Java mit seiner API alles zu bieten hat, das hat einen ja regelrecht erschlagen :autsch: So kam ich dann jetzt schon mal zu meinem ersten Problem.
Die Aufgabe lautet: Ein Raster über die GUI zu erstellen, welches einer Leiterplatte mit zusammenhängenden Dreierketten entspricht. Die Rastergröße soll durch Anzahl der Zeilen und Spalten übergebbar sein. Soweit so gut.
Dazu habe ich mir ein Fenster der Klasse Frame erstellt, eine ScrollPane sowie ein Objekt von einer Klasse Raster. Diese Klasse Raster ist eine Erweiterung der Klasse Canvas zum Zeichnen meines Rasters. Das Objekt der Klasse Raster füge ich zur ScrollPane hinzu, die ScrollPane habe ich auf das Fenster gesetzt.
Mein Problem dabei: Wenn das Raster größer wird als das Fenster, schneidet er mir alles ab was außerhalb der Maße des Fensters liegt, die ScrollBars werden jedoch nicht angezeigt sodass der Rest über die ScrollBars erreichbar wäre. Wo liegt das Problem?
hier meine Quelltexte:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Rasterlayout
{
public ScrollPane scrollpane;
public int Spalten;
public int Zeilen;
public Rasterlayout(int Zeilen, int Spalten)
{
this.Spalten = Spalten;
this.Zeilen = Zeilen;
erstelleFenster();
}
public void erstelleFenster()
{
Frame fenster = new Frame("Rasterlayout");
fenster.setBounds(100,100,600,600);
fenster.addWindowListener(new FensterSchliesser(fenster));
scrollpane = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
scrollpane.setBackground(Color.WHITE);
Raster raster = new Raster(Zeilen, Spalten);
scrollpane.add(raster);
fenster.add(scrollpane);
fenster.setVisible(true);
}
public static void main(String[] args)
{
Rasterlayout rasterlayout = new Rasterlayout(50,5);
}
private class FensterSchliesser implements WindowListener
{
private Frame fenster;
public FensterSchliesser(Frame fenster)
{
this.fenster = fenster;
}
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e)
{
fenster.dispose();
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
}
}
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Raster extends Canvas
{
public int Zeilen;
public int Spalten;
public Raster(int Zeilen, int Spalten)
{
this.Zeilen = Zeilen;
this.Spalten = Spalten;
}
public void paint(Graphics g)
{
super.paint(g);
int x = 0;
int y = 0;
for (int j = 0; j < Zeilen;j++)
{
for (int i = 0; i < Spalten;i++)
{
g.setColor(Color.decode("#DF8439"));
g.fillRect(x+1,y+1,99,20);
g.setColor(Color.BLACK);
g.drawRect(x+1,y+1,99,20);
g.setColor(Color.WHITE);
g.fillOval(x+11,y+6,10,10);
g.fillOval(x+44,y+6,10,10);
g.fillOval(x+77,y+6,10,10);
g.setColor(Color.BLACK);
g.drawOval(x+11,y+6,10,10);
g.drawOval(x+44,y+6,10,10);
g.drawOval(x+77,y+6,10,10);
x = x + 103;
}
x = 0;
y = y + 23;
}
}
}
Für jede Hilfe wäre ich dankbar
:toll: