Zum Inhalt springen

JScrollBar in JPanel


Rainer Wahnsinn

Empfohlene Beiträge

Halli Hallo,

für ein Projekt muss ich eine EKG-Kurve in einem JPanel darstellen.

Im Hauptfenster habe ich ein GridLayout(2,2), wovon ein Panel eben das mit

der EKG-Kurve ist. Da diese jedoch länger ist als das Panel muss ich eine Scrollbar implementieren, die allerdings nicht das tut was sie soll.

Im Internet habe ich zwar viel Beispiele gefunden, die mich allerdings nicht wirklich weiter gebracht haben.

Ich hoffe, dass mir hier jemand weiterhelfen kann,

danke im Vorraus,

Rainer

Hier der Code :

package view;


import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Font;

import java.awt.event.AdjustmentEvent;

import java.awt.event.AdjustmentListener;


import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollBar;

import javax.swing.border.Border;


public class EkgBildPanel {


	private static JPanel ekgBildPanel;


	public EkgBildPanel(JFrame hauptfenster) {


		ekgBildPanel = new JPanel(new BorderLayout());

		Border ekgBildPanelBorder = BorderFactory.createLineBorder(Color.black);

		ekgBildPanel.setBorder(ekgBildPanelBorder);

		Container contentPane = hauptfenster.getContentPane();

		contentPane.add(ekgBildPanel);


		JLabel title = new JLabel("       EKG-Kurve :");

		title.setFont(new Font("Dialog", 0, 25));

		ekgBildPanel.add(title, BorderLayout.NORTH);

		paintEkg();


		// Scrollbar

		final JScrollBar scrollbar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 20, 0, 300);

		scrollbar.setUnitIncrement(2);

	    scrollbar.setBlockIncrement(1);

		ekgBildPanel.add(scrollbar,BorderLayout.SOUTH);

		scrollbar.addAdjustmentListener(new AdjustmentListener() {

			public void adjustmentValueChanged(AdjustmentEvent e) {

				scrollbar.setValue(scrollbar.getValue());

				paintEkg();

				}});		

	}


	// Malt die EKG-Kurve

	public void paintEkg() {

		ekgBildPanel.repaint();

		ekgBildPanel.add(new EKGview(),BorderLayout.CENTER);

	}

}


Link zu diesem Kommentar
Auf anderen Seiten teilen

Also keine Ahnung was du für Tutorials gelesen hast, aber deine Verwendung der Klasse ScrollBar ergibt so leider rein gar keinen Sinn.

Schau dir am besten mal das How-to von Oracle dazu an, das sollte dir weiter helfen:

How to Use Scroll Panes (The Javaâ„¢ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also brauch ich nen ScrollPane, keine Scrollbar...schon mal gut zu wissen :cool::cool:

Jetzt aber immer noch die Frage....in diesem Pane soll ein Bild von einem EKG geladen, verändert, gelöscht werden können...

Hab mir zwar nen paar Beispiele angeschaut, aber so wirklich will's nicht funktionieren...In dem Pane hab ich's aber schonmal, wenn ich es nach WEST ziehe ist auch nur ein kleiner Teil der Kurve zu sehen...was fehlt jetzt noch damit ich auch die Scrollbalken sehe...?

Viele Grüße,

Rainer

package view;


import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Font;

import java.awt.ScrollPane;

import java.awt.event.AdjustmentEvent;

import java.awt.event.AdjustmentListener;


import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollBar;

import javax.swing.border.Border;


public class EkgBildPanel {


	private static JPanel ekgBildPanel;

	private ScrollPane sc;


	public EkgBildPanel(JFrame hauptfenster) {


		ekgBildPanel = new JPanel(new BorderLayout());

		Border ekgBildPanelBorder = BorderFactory.createLineBorder(Color.black);

		ekgBildPanel.setBorder(ekgBildPanelBorder);

		Container contentPane = hauptfenster.getContentPane();

		contentPane.add(ekgBildPanel);


		JLabel title = new JLabel("       EKG-Kurve :");

		title.setFont(new Font("Dialog", 0, 25));

		ekgBildPanel.add(title, BorderLayout.NORTH);


		sc = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);

		ekgBildPanel.add(sc,BorderLayout.CENTER);

		sc.setVisible(true);

		sc.getVAdjustable().setUnitIncrement(1);

		sc.getHAdjustable().setUnitIncrement(1);

		sc.setSize(100,100);

		paintEkg();

	}


	// Malt die EKG-Kurve

	public void paintEkg() {

		sc.repaint();

		sc.add(new EKGview());


	}

}


Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...