JSrollPane & Graphics

Status
Nicht offen für weitere Antworten.

jopp

Mitglied
hi leute

ich habe folgendes problem:

ich möchte daten in einem fenster ausgeben. dieses fenster ist ein internalframe. in diesem internalframe befindet sich ein scrollpane und in diesem wird dann der graph (wieder in einem pane) gezeichnet. ich habe in einem anderem forum gelesen, dass wenn der inhalt des scrollpane grösser als es selbst ist, dann werden die scrollbalken automatisch hinzugefügt. leider ist es bei mir nicht so? was könnten dafür die ursachen sein?

Code:
class PrintData extends JInternalFrame {

  public PrintData () {
    super("test graph", true, true, true, true);
    setSize(600,300);
    Dimension dmax = new Dimension(700,300);
    setMaximumSize(dmax);

    JScrollPane sp = new JScrollPane();
    sp.setSize(600,300);
    sp.setLayout(null);
    //sp.setHorizontalScrollBar(new JScrollBar());
    sp.add(new TestGraph());
    sp.setVisible(true);
    getContentPane().add(sp);
    setVisible(true);
    MainFrame.desk.add(this);
    show();

  }

}


public class TestGraph extends JPanel {
  public TestGraph () {
    setSize(900,600);

  }

  public void paintComponent (Graphics g) {
    super.paintComponent(g);
    super.setSize(900,600);

    Graphics2D g2 = (Graphics2D)g;

    int[] data = null;
    int s = 0;
    int r = 0;

    //an dieser Stelle werden die Daten aus einer Datenbank gelesen und in data geschrieben

    
    int x0 = 30;
    int y0 = 150;

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    Shape xline = new Line2D.Double(x0,10,x0,170);
    Shape yline = new Line2D.Double(10,y0,590,y0);
    g2.setPaint(Color.blue);
    g2.draw(xline);
    g2.draw(yline);

    int x1 = 0;
    int x2 = 0;
    int y1 = 0;
    int y2 = 0;
    System.out.println(s);
    System.out.println(r);

    for(int z = 0 ; z < r-1 ; z++) {
      x1 = x0 + 1*z;
      x2 = x1 + 1;
      y1 = y0 - 1*(int)data[z];
      y2 = y0 - 1*(int)data[z+1];
      System.out.println("x1: "+x1+"  y1: "+y1+"  x2: "+x2+"  y2: "+y2);
      Shape linexy = new Line2D.Double(x1,y1,x2,y2);
      g2.setPaint(Color.red);
      System.out.println("Color = red");
      g2.draw(linexy);


      y1 = 0;
      y2 = 0;

    }

  }
}

ich hoffe der code wird vernünftig dargestellt.

falls mir einer von euch helfen kann, wäre das spitze, oder vielleicht weiß auch einer von euch unterlagen, tutorials oder bücher, welche sich mit diesem thema beschäftigen.

danke im vorraus,

jopp
 
B

bygones

Gast
probier mal statt setSize -> setPreferredSize - bei mir klappt das dann meistens
 

Ebenius

Top Contributor
Das Zauberwort heißt JViewPort! Ein JScrollPane (ich verweise hiermit sehr gern auf die ziemlich gute API der Klasse) stellt den Inhalt auf einem JViewPort dar. Es gibt ergo zwei Möglichkeiten, den anzuzeigenden Inhalt auf das JScollPane zu bekommen:

Code:
/* Im Konstruktor */
new JScrollPane(component)

oder

Code:
/* per .add() - Methode, allerdings auf den view port eben */
scrollPane.getViewPort().add(component)

Dein Prog sollte also so aussehen (partiell):

Code:
public PrintData()
{
	super("test graph", true, true, true, true);
	setSize(600, 300);
	Dimension dmax = new Dimension(700, 300);
	setMaximumSize(dmax);

	JScrollPane sp = new JScrollPane();

	/* unsinn, wenn: prefferred size */ //sp.setSize(600, 300);
	/* sowieso nicht bei scroll panes */ //sp.setLayout(null);
	sp.getViewport().add(new TestGraph());
	sp.setVisible(true);
	getContentPane().add(sp);

	/* show() und setVisible(true) machen quasi das gleiche :-) */
	// setVisible(true);
	MainFrame.desk.add(this);
	show();
}

Anbei: Frames im allgemeinen sollten nicht selbst show() (resp. setVisible()) aufrufen. Das sollte eigentlich in der Verantwortung des Eigentümers liegen (wem auch immer das MainFrame gehört). Selbiges gilt dann auch für das hinzufügen zum desktop pane. Ansonsten macht man sich die Mehrfachbenutzbarkeit unsinnig kapputt. Aber schlimm ist das nicht (nur unschön :) )

Ich hoffe ich konnte helfen.

Grüße, Ebenius
 

jopp

Mitglied
ich danke dir für deine antworten, werde das ganze gleich mal ausprobieren und dann darüber berichten.

jopp
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JSrollPane & JInternalFrame & Graphics AWT, Swing, JavaFX & SWT 3
G JList auf einem JPane mit JSrollPane AWT, Swing, JavaFX & SWT 4
N Graphics Objekte scalen mit Veränderung des Bildschirms AWT, Swing, JavaFX & SWT 19
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R AWT Graphics initialisieren AWT, Swing, JavaFX & SWT 15
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
B Graphics to Image AWT, Swing, JavaFX & SWT 3
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Graphics -> Graphics2D etwas zu beachten? AWT, Swing, JavaFX & SWT 8
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
M Graphics.fillOval AWT, Swing, JavaFX & SWT 1
javampir Sauberes Faden mit awt Graphics AWT, Swing, JavaFX & SWT 6
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
I JavaFX Graphics Performance AWT, Swing, JavaFX & SWT 2
vodkaz Graphics aufrufen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
M JFrame Graphics.drawString Problem AWT, Swing, JavaFX & SWT 11
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
R Ankerpunkt bei Graphics AWT, Swing, JavaFX & SWT 3
R Fließende Bewegung von Graphics AWT, Swing, JavaFX & SWT 6
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
P "Graphics" wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
B Swing Zeilenumbruch in Graphics AWT, Swing, JavaFX & SWT 20
T Graphics zeichnet nicht AWT, Swing, JavaFX & SWT 2
T Applet graphics - zeichnen funktioniert nicht AWT, Swing, JavaFX & SWT 14
R Graphics-Object speichern AWT, Swing, JavaFX & SWT 4
S Zeichnen mit java.awt.Graphics AWT, Swing, JavaFX & SWT 6
D Graphics zeichnen AWT, Swing, JavaFX & SWT 6
M Graphics auf JFrame Koordinatensystem AWT, Swing, JavaFX & SWT 3
T Graphics Ersetzend Zeichnen AWT, Swing, JavaFX & SWT 6
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
A AWT AWT Panelfenster mit Graphics kombinieren AWT, Swing, JavaFX & SWT 7
T Graphics Parameterübergabe AWT, Swing, JavaFX & SWT 3
K Graphics.drawImage() sehr schnell AWT, Swing, JavaFX & SWT 5
M Graphics-Objekt aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
M Graphics.drawImage verlangsamt sich plötzlich AWT, Swing, JavaFX & SWT 15
S Swing AWT (graphics (g)) AWT, Swing, JavaFX & SWT 27
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
B Swing Tooltips auf Graphics AWT, Swing, JavaFX & SWT 8
Ä Graphics-Komponente auf JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
T Swing Component in Graphics zeichnen AWT, Swing, JavaFX & SWT 4
J getFontMetrics außerhalb von paint(Graphics g) AWT, Swing, JavaFX & SWT 8
E Problem bzw. Sinn von Graphics / Graphics Context AWT, Swing, JavaFX & SWT 21
S Weder ActionListener noch Graphics wollen so recht AWT, Swing, JavaFX & SWT 3
F Methode drawOval(int,int,int,int) von graphics AWT, Swing, JavaFX & SWT 4
G Graphics Objekte in AWT Container einfügen AWT, Swing, JavaFX & SWT 2
S Mit Graphics g ins Fenster zeichnen AWT, Swing, JavaFX & SWT 4
G Graphics - Raute AWT, Swing, JavaFX & SWT 3
G "pinseldicke" bei Graphics? AWT, Swing, JavaFX & SWT 2
G Graphics.drawImage() AWT, Swing, JavaFX & SWT 6
D Methode Graphics g klassenübergreifend nutzen. AWT, Swing, JavaFX & SWT 3
W java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/Dev AWT, Swing, JavaFX & SWT 1
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
T Transparenz bei Graphics AWT, Swing, JavaFX & SWT 9
L Graphics AWT, Swing, JavaFX & SWT 37
B JPanel#paintComponent(Graphics g) << flackert oO AWT, Swing, JavaFX & SWT 3
Y Problem mit der Referenz eines Graphics-Objekts AWT, Swing, JavaFX & SWT 5
O Graphics erstellt Componente scheinbar nicht richtig AWT, Swing, JavaFX & SWT 23
G 2x Graphics in einer paint() miteinander verbinden AWT, Swing, JavaFX & SWT 11
K Gutes Buch gesucht (Graphics Only) Kennt jemand eins? AWT, Swing, JavaFX & SWT 5
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
J Einmal gleichzeitig auf zwei Graphics malen? AWT, Swing, JavaFX & SWT 5
E Image, Graphics, verzögert zeichnen AWT, Swing, JavaFX & SWT 2
N Graphics Objekt "puffern" AWT, Swing, JavaFX & SWT 7
H neuzeichnen von graphics nach minimierung oder ähnlichem AWT, Swing, JavaFX & SWT 10
G SWT Graphics Zeichnung neu laden AWT, Swing, JavaFX & SWT 13
G SWT Graphics GC Problem AWT, Swing, JavaFX & SWT 6
M Abstrakte Graphics Klasse erzeugen AWT, Swing, JavaFX & SWT 2
H awt Graphics und Image selbermachen ? AWT, Swing, JavaFX & SWT 12
D Image aus Graphics erstellen? AWT, Swing, JavaFX & SWT 2
R Graphics Objekt ändern AWT, Swing, JavaFX & SWT 11
raptorrs J2D graphics, sind 500px immer 500 px AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben