Swing Eigene JComponent Scrollable

Animal21

Mitglied
Hallo Leute,

ich hab mir eine Component gebastelt, geerbt von JComponent, auf der ich zeiche und stuff mache...

Nun möchte ich diese Komponente noch Scrollable haben, leider geht das mit JScrollPane(myComponent); nicht wie es soll (sprich garnicht, da meine gezeichneten sachen nicht angezeigt werden.)

Was muss ich tun, damit ich meine Komponente Scrollable bekomme?

gruß
ani
 

Animal21

Mitglied
Hallo,

ja habe ich, eigentlich soll die Größe immer dynamisch an die Hauptfenstergröße angepasst werden, aber selbst dies habe ich zum testen auf eine feste größe gesetzt.

Mein Problem ist nun, dass GARNICHTS gezeichnet wird.

gruß
mario
 

Animal21

Mitglied
ist schlecht zu machen...

Java:
public abstract class gl_AbstControl extends JComponent{
	public gl_AbstControl(){
	}
}

public class gl_Card extends gl_AbstControl implements HierarchyBoundsListener, DropTargetListener, 
														MouseListener, MouseMotionListener, Scrollable{
	public enum UpdateAction { New, Add, Remove };
	public class gl_CardButton extends gl_AbstControl{
                 //...
	}
	
	//Fields
	private String title;
	private List<Student> students;
	private List<gl_CardButton> buttons;
	private DropTarget dropTarget;
	private DataFlavor dataFlavor;
	
	private Rectangle rectAddButton;
 	private FontMetrics fm;
	private boolean bHasAddButton;
	private boolean bMouseInAddButton;
	private Color cAddButtonColor;
	private Color cBorderColor;

	protected GL_RequestEventMulticaster multicaster;
	
	//Properties
	public boolean HasAddButton(){ return bHasAddButton; }
	public void SetHasAddButton(boolean hasAddButton){ this.bHasAddButton = hasAddButton; repaint(); }
	
	//Constructor
	public gl_Card(String title){
		super();
		
		this.setFont(new Font("Myriad Pro", Font.BOLD, 16));
		fm = getFontMetrics(this.getFont());
		this.title = title;
		buttons = new ArrayList<gl_CardButton>();
		this.setBackground(new Color(255, 255, 255, 0));
		this.cBorderColor = Color.white;
		this.bHasAddButton = false;
		this.cAddButtonColor = Color.white;
		
		rectAddButton = new Rectangle(this.getX() + this.getWidth() - (fm.getHeight() + 4), 4, 
				fm.getHeight() - 4, fm.getHeight() - 4);
		
		dropTarget = new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE,
		        this, true, null);
		
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
		this.addHierarchyBoundsListener(this);
	}
	
	//Methods
	//Private
	private void calcStuff(){
		if(students != null && buttons != null){
			for(int i=0; i<buttons.size(); i++){
				buttons.get(i).setSize(this.getWidth() - 10, 20);
				buttons.get(i).setLocation(5, 30 + i * 25);
			}		
		}
	}
	
	//Handler
	@Override
	public void paint(Graphics g){
		super.paint(g);
	
		//Border
		g.setColor(cBorderColor);
		g.fillRoundRect(0, 0, this.getWidth(), this.getHeight(), 25, 25);

		//Background
		g.setColor(new Color(135, 197, 255));
		g.fillRoundRect(g.getClipBounds().x + 2, g.getClipBounds().y + 2, g.getClipBounds().width - 4, g.getClipBounds().height - 4, 25, 25);

		//Text
		g.setColor(Color.white);
		g.setFont(this.getFont());
		g.drawString(this.title, (int)((g.getClipBounds().getWidth() - fm.stringWidth(title))/2), 18);

		//Seperator
		g.fillRect(0, fm.getHeight() + 2, (int)g.getClipBounds().getWidth(), 3);
		
		//AddButton
		if(bHasAddButton){
			g.setColor(cAddButtonColor);
			Rectangle r = rectAddButton = new Rectangle(g.getClipBounds().x + g.getClipBounds().width - (fm.getHeight() + 4), 4, 
					fm.getHeight() - 4, fm.getHeight() - 4);
			g.drawRoundRect(r.x, r.y, r.width, r.height, 
							fm.getHeight() - 4, fm.getHeight() - 4);
			g.drawLine( r.x + (int)(r.width / 2) + 1, 
					r.y + 3, 
					r.x + (int)(r.width / 2) + 1, 
					r.y + r.height - 3);
			g.drawLine( r.x + 3, 
					r.y + (int)(r.height / 2), 
					r.x + r.width - 3, 
					r.y + (int)(r.height / 2));
		}
		
		super.paintComponents(g);
	}
	@Override
	public Dimension getPreferredScrollableViewportSize() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public int getScrollableBlockIncrement(Rectangle arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		return 0;
	}
	@Override
	public boolean getScrollableTracksViewportHeight() {
		// TODO Auto-generated method stub
		return false;
	}
	@Override
	public boolean getScrollableTracksViewportWidth() {
		// TODO Auto-generated method stub
		return false;
	}
	@Override
	public int getScrollableUnitIncrement(Rectangle arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		return 0;
	}
}

ist jetzt nicht alles, aber vll reicht es.

später wird es wie folgt aufgerufen:
Java:
		studentsCard = new gl_Card("Studenten");
		studentsCard.SetHasAddButton(true);
		studentsCard.Update(dataManager.GetAllStudents(), gl_Card.UpdateAction.New);
		studentsCard.Add_GL_ActionListener(this);
		studentsCard.setSize(150, 200);
		studentsCard.setPreferredSize(new Dimension(150, 200));
                //...
                add(new JScrollPane(studentsCard));

gruß
ani
 

Michael...

Top Contributor
Bei
Code:
getPreferredScrollableViewportSize()
null zurück zu geben ist wohl nicht so geschickt ;-)
In Deinem Fall würde ich gar nicht das Interface Scrollable implementieren.
Es reicht einfach aus die PreferredSize zu setzen und ggf. zu aktualisieren, damit die Komponent in einer JScrollPane im Fall von (PreferredSize < JScrollPane) scrollbar ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
M eigene GUI Bibliothek erstellen. AWT, Swing, JavaFX & SWT 10
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
B Notepad++ in die eigene GUI einbinden AWT, Swing, JavaFX & SWT 7
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
M Eigene Klasse mit Grafikobjekten schreiben AWT, Swing, JavaFX & SWT 4
S JavaFX Drehen um eigene Achse AWT, Swing, JavaFX & SWT 2
P X extends TreeView - eigene Methoden AWT, Swing, JavaFX & SWT 5
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
L Eigene Component anordnen AWT, Swing, JavaFX & SWT 7
L JavaFX Eigene JavaFX Controls anlegen AWT, Swing, JavaFX & SWT 1
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
T Swing Eigene Konsole AWT, Swing, JavaFX & SWT 5
D Swing Eigene Tabelle AWT, Swing, JavaFX & SWT 18
M eigene horizontale Scrollbar AWT, Swing, JavaFX & SWT 1
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
Kenan89 3D Models aus anderen Spielen in eigene einfügen AWT, Swing, JavaFX & SWT 3
R SWT Eigene Events erstellen und werfen AWT, Swing, JavaFX & SWT 59
P Eigene CMD GUI zum Starten von JAR AWT, Swing, JavaFX & SWT 10
M Swing eigene Dialoge, aber wie genau? AWT, Swing, JavaFX & SWT 5
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
K 3D-Grafik Eigene "Kamera" AWT, Swing, JavaFX & SWT 2
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
B Eigene Methoden in TABs einfügen AWT, Swing, JavaFX & SWT 8
R eigene Methoden für Buttons? AWT, Swing, JavaFX & SWT 11
H Swing Eigene Komponente wird nur halb oder komisch angezeigt AWT, Swing, JavaFX & SWT 3
H Swing Eigene Komponente reagiert falsch auf mouseClicked() AWT, Swing, JavaFX & SWT 5
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
T SWT eigene Komponenten AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
A Eigene StatusBar AWT, Swing, JavaFX & SWT 2
S Eigene GUI Elemente erstellen AWT, Swing, JavaFX & SWT 6
D Eigene Methode soll Gerade zeichnen AWT, Swing, JavaFX & SWT 5
D Swing Eigene Komponente mit JSpinner AWT, Swing, JavaFX & SWT 4
MrMilti eigene Klasse in JTable ablegen AWT, Swing, JavaFX & SWT 12
R Swing JTable: Eigene Zeichnung im Header AWT, Swing, JavaFX & SWT 11
A Eigene Border für Buttons AWT, Swing, JavaFX & SWT 19
A Eigene Buttons AWT, Swing, JavaFX & SWT 20
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
S Eigene GUI (evt. Toolkit) AWT, Swing, JavaFX & SWT 10
M SWT: eigene Events AWT, Swing, JavaFX & SWT 9
& eigene Schriftart in JEditorpane AWT, Swing, JavaFX & SWT 2
T Eigene Fenster kreieren?zb. wie bei Winamp? AWT, Swing, JavaFX & SWT 9
D Eigene Component erstellen? AWT, Swing, JavaFX & SWT 4
F eigene Swing-Komponente. Drehregler AWT, Swing, JavaFX & SWT 4
M Eigene Klasse für mehrer JSplitPanes AWT, Swing, JavaFX & SWT 3
M Eigene Komponenten basteln AWT, Swing, JavaFX & SWT 25
O Eigene GUI Objekte entwerfen? AWT, Swing, JavaFX & SWT 3
A Eigene, sich selbst zeichnende Component AWT, Swing, JavaFX & SWT 5
S Eigene Komponenten AWT, Swing, JavaFX & SWT 2
T Eigene erweiterte MouseEvents nutzen AWT, Swing, JavaFX & SWT 2
M In eigene JPanel Klasse zeichnen AWT, Swing, JavaFX & SWT 4
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
M eigene ComponentUI und Serializable AWT, Swing, JavaFX & SWT 3
E Eigene Steuerelemente bauen AWT, Swing, JavaFX & SWT 3
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
T 4 db tabellen in einem karteireiter eigene klasse für die me AWT, Swing, JavaFX & SWT 7
S SWT Für jede gui komponente eigene methode AWT, Swing, JavaFX & SWT 2
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
D eigene SwingKonsole. AWT, Swing, JavaFX & SWT 5
I Eigene JComboBox AWT, Swing, JavaFX & SWT 10
C UIDefaults für eigene Klasse anpassen AWT, Swing, JavaFX & SWT 3
C ISelectionProvider und eigene Selections AWT, Swing, JavaFX & SWT 2
M kann man auch eigene look and feels machen? AWT, Swing, JavaFX & SWT 2
L eigene Komponente, ActionEvent senden? AWT, Swing, JavaFX & SWT 3
E Beim Schließen des Fensters eigene Funktion aufrufen AWT, Swing, JavaFX & SWT 8
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
T JFrame - eigene Titelleiste AWT, Swing, JavaFX & SWT 8
Y Eigene Komponente einfügen AWT, Swing, JavaFX & SWT 6
G Eigene Koponente erstellen AWT, Swing, JavaFX & SWT 3
G Eigene Componente in jScrollView einbetten AWT, Swing, JavaFX & SWT 6
T Eigene grafische Oberfläche AWT, Swing, JavaFX & SWT 7
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
Hatsi09 JComponent anklicken und "entklicken" AWT, Swing, JavaFX & SWT 7
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
S Swing Schwierigkeiten mit JComponent AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben