ScrollPane Anpassungen

Status
Nicht offen für weitere Antworten.

dweiner

Mitglied
Hallo,
ich habe eine ScrollPane, in der der darin platzierte Text mehr Platz braucht als ich habe und somit die Scrollbalken ins Spiel kommen. Mein Problem ist aber, dass die Scrollbalken dann nach unten scrollen. Ich möchte die Balken aber von Anfang an oben haben. Wie mache ich das? Ich habs versucht mit, funktioniert aber nicht:

JScrollPane scrollpane = new JScrollPane(bla);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);


Noch was anderes: in meiner ScrollPane zeige ich eine JList an. Wie kann ich die Elemente der JList in der ScrollPane zentriert anzeigen lassen, bei mir wirds zur Zeit am linken Rand angezeigt....

Danke schon mal im voraus!

Gruß
Dominik
 
G

Gast

Gast
Frage 1: Du rufst nach Einfügen der Elemente in die Liste das auf:
Code:
JScrollPane pane = new JScrollPane();
pane.getVerticalScrollBar().setValue(pane.getVerticalScrollBar().getMinimum());

Frage 2: Das kannst du über den ListCellRenderer festlegen.
Beispiel:
Code:
		JList list = new JList();		
		list.setCellRenderer(new MyListCellRenderer());

	}
	class MyListCellRenderer extends DefaultListCellRenderer {
		public MyListCellRenderer(){
			this.setHorizontalTextPosition(CENTER);
		}

		public Component getListCellRendererComponent( JList list, Object value, int index,boolean isSelected, boolean cellHasFocus) {
			setText((String)value);
			return this ;
		}	
	}
 

dweiner

Mitglied
Hallo,

danke schon mal für deine Antwortvorschläge!
Ich habe soeben beide ausprobiert und leider funktionieren bei mir deine beiden Vorschläge NICHT! Eigentlich komisch - deine Antworten sehen eigentlich schon plausibel aus......

Könntest du mir da (oder jemand anderes) nochmal auf die Sprünge helfen?

1) Scrollbalken oben anfangen, wenn der Text darin zu lang ist...
2) Elemente einer JList oder TextArea in einem ScrollPane zentriert anzeigen lassen..

Danke nochmal!


Gruß
Dominik
 
G

Gast

Gast
Mach doch einfach eine kleine lauffähige Demo die das Problem zeigt. Ich hab beide Codeschnipsel bei mir korrekt am laufen.
 

dweiner

Mitglied
Hi,

ich hab hier mal eine kleine Demo gebastelt. Komisch, die Sache mit den oben beginnenden Scrollbalken wird hier direkt korrekt gemacht - also ohne irgendwelche Zuweisungen, während es in meinem eigentlichen Programm nicht mal mit "VerticalScrollPane" etc. funktionierte.....

Desweiteren sollte noch die Schrift im zweiten ScrollPane zentriert angezeigt werden.

Hier mal mein Demo-Code:
Code:
import java.awt.BorderLayout;

import java.awt.Dimension;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.JEditorPane;
import javax.swing.JFrame;

import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;


public class Test {
	
	private JFrame frame;
	private JEditorPane infoArea;
	private String text;
	private JList list;
	
	public Test(){
		
			
			frame = new JFrame();
			frame.setAlwaysOnTop(true);
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			frame.setLocationByPlatform(true);

			
			//bei diesem ScrollPane sollte der Scrollbalken oben beginnen
			JScrollPane scrollPane = new JScrollPane(infoArea = new JEditorPane());
			scrollPane.setMinimumSize(new Dimension(50, 30));
			scrollPane.setPreferredSize(new Dimension(50,30));

		
			
			
			text = "<html>[b]Sie sehen nun den Bildschirm eines Marktexperiments. Ganz oben sehen " +
					"Sie, dass Sie sich in einem Testdurchgang befinden. In der Ecke rechts oben sehen Sie " +
					"einen kleinen Kasten mit der verbleibenden Zeit in Sekunden. Sie handeln mit den anderen Spielern " +
					"in Ihrem Markt jeweils 120 Sekunden an einem Stück. Ist diese Zeit abgelaufen, so verlassen alle " +
					"Spieler den Handelsbildschirm automatisch. Für diesen Testdurchgang haben wir die Zeit auf " +
					"500 Sekunden ausgeweitet, damit Sie genügend Zeit haben die einzelnen Bildschirmelemente " +
					"kennen zu lernen.

Bitte klicken Sie auf OK</p>" +
					"[/b]</html>";
			
			infoArea.setText(text);	
			infoArea.setFont(new Font("Dialog", Font.BOLD, 44));
			
			
			// in diesem ScrollPane befindet sich eine JList, bei der der Text zentriert ausgegeben werden soll
			JScrollPane ScrollPane2 = new JScrollPane(list = new JList());
			ScrollPane2.setPreferredSize(new Dimension(50, 30));
			ScrollPane2.setMaximumSize(new Dimension(50, 30));
			
			String [] data = new String[1];
			data[0] = "Hallo";
			list.setListData(data);
			
			JPanel panel = new JPanel();
			panel.setLayout(new BorderLayout());
			panel.setBorder(BorderFactory.createEmptyBorder(100, 100, 100, 100));
			panel.add(scrollPane, BorderLayout.CENTER);
			panel.add(ScrollPane2, BorderLayout.SOUTH);


Danke schon mal im voraus für deine Hilfe!

Gruß
Dominik
 
G

Guest

Gast
Ok, ne lauffähige Demo ist was anderes aber hier eine mögliche Lösung zu erstem Problem:
Code:
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

public class Demo {

	private JFrame frame;
	private JEditorPane infoArea;
	private String text;
	private JList list;
	JScrollPane scrollPane;

	public Demo(){


		frame = new JFrame();
		frame.setAlwaysOnTop(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationByPlatform(true);


		//bei diesem ScrollPane sollte der Scrollbalken oben beginnen
		infoArea = new JEditorPane();
		scrollPane = new JScrollPane(infoArea);
		scrollPane.setMinimumSize(new Dimension(50, 30));
		scrollPane.setPreferredSize(new Dimension(50,30));


		text = "<html>[b]Sie sehen nun den Bildschirm eines Marktexperiments. Ganz oben sehen " +
		"Sie, dass Sie sich in einem Testdurchgang befinden. In der Ecke rechts oben sehen Sie " +
		"einen kleinen Kasten mit der verbleibenden Zeit in Sekunden. Sie handeln mit den anderen Spielern " +
		"in Ihrem Markt jeweils 120 Sekunden an einem Stück. Ist diese Zeit abgelaufen, so verlassen alle " +
		"Spieler den Handelsbildschirm automatisch. Für diesen Testdurchgang haben wir die Zeit auf " +
		"500 Sekunden ausgeweitet, damit Sie genügend Zeit haben die einzelnen Bildschirmelemente " +
		"kennen zu lernen.

Bitte klicken Sie auf OK</p>" +
		"[/b]</html>";

		infoArea.setText(text);   
		infoArea.setFont(new Font("Dialog", Font.BOLD, 44));

		frame.getContentPane().add(scrollPane);
		frame.pack();
		frame.setSize(800, 600);
		frame.setVisible(true);		
		
		Thread t = new Thread(){
			public void run(){
				scrollPane.getVerticalScrollBar().setValue(0);
			}
		};
		t.start();
	}
	
	

	public static void main(String[] argv){
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				Demo d=new Demo();
			}
		});
	}
}
 
G

Guest

Gast
Eine Lösung für das zweite Problem:
Code:
import java.awt.Component;
import java.awt.Dimension;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

public class Demo {

	private JFrame frame;
	private JEditorPane infoArea;
	private String text;
	private JList list;
	JScrollPane scrollPane;

	public Demo(){


		frame = new JFrame();
		frame.setAlwaysOnTop(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationByPlatform(true);


		list = new JList();
        // in diesem ScrollPane befindet sich eine JList, bei der der Text zentriert ausgegeben werden soll
        JScrollPane scrollPane2 = new JScrollPane(list);
        scrollPane2.setPreferredSize(new Dimension(50, 30));
        scrollPane2.setMaximumSize(new Dimension(50, 30));
        
        String [] data = new String[1];
        data[0] = "Hallo";
        list.setListData(data); 
        list.setCellRenderer(new MyListCellRenderer());


		frame.getContentPane().add(scrollPane2);
		frame.pack();
		frame.setSize(800, 600);
		frame.setVisible(true);				
	}
	
   class MyListCellRenderer extends DefaultListCellRenderer {
	      public MyListCellRenderer(){
	         this.setHorizontalAlignment(JLabel.CENTER);
	      }

	      public Component getListCellRendererComponent( JList list, Object value, int index,boolean isSelected, boolean cellHasFocus) {
	         setText((String)value);
	         return this ;
	      }   
	   } 

	public static void main(String[] argv){
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				Demo d=new Demo();
			}
		});
	}
}

Sorry für die kleinen Fehler, die sich bei meiner ersten Lösung eingeschlichen hatten =)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E GridLayout auf ScrollPane AWT, Swing, JavaFX & SWT 4
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
TheWhiteShadow JavaFX ScrollPane nimmt nicht genug platz ein AWT, Swing, JavaFX & SWT 3
J Gridpane Breite in Scrollpane automatisch anpassen AWT, Swing, JavaFX & SWT 2
E JavaFX Cursor-Position im ScrollPane AWT, Swing, JavaFX & SWT 0
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
C JavaFX ScrollPane schießt über das Ziel hinaus... AWT, Swing, JavaFX & SWT 1
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
T JavaFX Zoom in ScrollPane AWT, Swing, JavaFX & SWT 1
L Java FX Scrollpane automatisch resizen AWT, Swing, JavaFX & SWT 3
P Java ScrollPane und ViewPort AWT, Swing, JavaFX & SWT 2
M JavaFX Scrollpane: Style von Contentpanel default AWT, Swing, JavaFX & SWT 1
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
O ScrollPane AWT, Swing, JavaFX & SWT 2
W JavaFX Scrollpane elementweise scrollen AWT, Swing, JavaFX & SWT 4
M SWT ScrollPane Größe zu klein AWT, Swing, JavaFX & SWT 6
Z Swing Welcher Layoutmanager bei ScrollPane? AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
Bluedaishi Synchrone ScrollPane trennen AWT, Swing, JavaFX & SWT 2
G JTable als fixierte Spalte in Scrollpane scrollt nicht mit... AWT, Swing, JavaFX & SWT 1
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
W Swing Zum Ende einer Scrollpane scrollen AWT, Swing, JavaFX & SWT 2
S Bestimmten Bereich eines Bildes im JFrame mit Scrollpane anzeigen AWT, Swing, JavaFX & SWT 0
Kenan89 Vertikal und horizontal zentrierter Pane in ScrollPane AWT, Swing, JavaFX & SWT 5
Kenan89 Java FX ScrollPane Content mittig setzen AWT, Swing, JavaFX & SWT 5
P ScrollPane nach zeichnen dynamisch resize AWT, Swing, JavaFX & SWT 7
O Swing GroupLayout und Scrollpane AWT, Swing, JavaFX & SWT 3
T scrollpane taucht nicht auf AWT, Swing, JavaFX & SWT 6
D Zoom zur Mouseposition in ScrollPane AWT, Swing, JavaFX & SWT 5
F AWT ScrollPane Problem AWT, Swing, JavaFX & SWT 3
S Swing Bild in JPanel in ScrollPane neu zeichnen AWT, Swing, JavaFX & SWT 2
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
D JTable in Scrollpane AWT, Swing, JavaFX & SWT 3
H ScrollPane AWT, Swing, JavaFX & SWT 3
0 JTable im ScrollPane AWT, Swing, JavaFX & SWT 3
S Swing Scrollpane und JTables AWT, Swing, JavaFX & SWT 6
D Swing JList: ScrollPane auf JPanel ansprechen AWT, Swing, JavaFX & SWT 7
Spin JTable Header wird nicht angezeigt ohne ScrollPane AWT, Swing, JavaFX & SWT 3
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
_dp Swing ScrollPane unterschlägt Großteil der Tabelle AWT, Swing, JavaFX & SWT 7
T ScrollPane Lösgelöst vom JPanel?!? AWT, Swing, JavaFX & SWT 4
D Panel zu Scrollpane adden AWT, Swing, JavaFX & SWT 8
T LayoutManager Panel in Scrollpane mittig ausrichten AWT, Swing, JavaFX & SWT 2
E JList in ScrollPane auf größe bringen AWT, Swing, JavaFX & SWT 5
A ScrollPane + internalFrame AWT, Swing, JavaFX & SWT 2
H ScrollPane scrollt ungefragt drauf los! AWT, Swing, JavaFX & SWT 5
T ScrollPane scrollt nicht einwandfrei AWT, Swing, JavaFX & SWT 3
G ScrollPane: getPreferredSize() AWT, Swing, JavaFX & SWT 11
M Labels in ScrollPane mit Linie verbinden AWT, Swing, JavaFX & SWT 2
P ScrollPane klappt zusammen beim verkleinern des Frames AWT, Swing, JavaFX & SWT 2
S Swing JTree in ScrollPane einen ToolTip geben AWT, Swing, JavaFX & SWT 2
T ScrollBar aus ScrollPane verstecken AWT, Swing, JavaFX & SWT 2
N ScrollPane in ein Fenster einfügen AWT, Swing, JavaFX & SWT 2
N ScrollPane passt sich nicht an AWT, Swing, JavaFX & SWT 4
M Problem mit jPanel (FlowLayout) in ScrollPane AWT, Swing, JavaFX & SWT 4
K TextArea auf Scrollpane AWT, Swing, JavaFX & SWT 3
G Tabellenköpfe trotz Scrollpane ausschalten AWT, Swing, JavaFX & SWT 5
P Automatisches Mitscrollen der ScrollPane AWT, Swing, JavaFX & SWT 2
M Problem beim Einsatz von ScrollPane (Fenster spielt verrückt AWT, Swing, JavaFX & SWT 2
R ImageViewer - Bild mit ScrollPane AWT, Swing, JavaFX & SWT 4
K Row und ColumnHeader in ScrollPane werden "verwischt&qu AWT, Swing, JavaFX & SWT 4
F Resize in ScrollPane AWT, Swing, JavaFX & SWT 4
M Swing: ScrollPane Button mit Pfeil ändern wie? AWT, Swing, JavaFX & SWT 2
F Scrollpane scrollt immer zur TextArea AWT, Swing, JavaFX & SWT 8
vogella JTable und JScrollPane - ScrollPane immer in der Mitte AWT, Swing, JavaFX & SWT 2
B Komponenten über ScrollPane hinaus angezeigt. AWT, Swing, JavaFX & SWT 3
S JTable (Scrollpane und ColumnNames) und JComboBox AWT, Swing, JavaFX & SWT 2
T Warum keine ScrollBars in diesem ScrollPane? AWT, Swing, JavaFX & SWT 3
A Scrollspeed bei Scrollpane erhöhen? AWT, Swing, JavaFX & SWT 2
A Scrollpane verschmiert beim scrollen AWT, Swing, JavaFX & SWT 5
P Resize von ScrollPane Inhalten AWT, Swing, JavaFX & SWT 2
S ScrollPane zeigt scrollbalken nicht an AWT, Swing, JavaFX & SWT 12
S Problem mit Scrollpane & Bild AWT, Swing, JavaFX & SWT 3
A JTable in ScrollPane scrollt nicht horizontal AWT, Swing, JavaFX & SWT 2
M JMenu verschwindet unter ScrollPane AWT, Swing, JavaFX & SWT 3
G jTable + ScrollPane (+ TableModel) AWT, Swing, JavaFX & SWT 7
G ScrollPane anfärben AWT, Swing, JavaFX & SWT 2
E Ärger mit ScrollPane, JTable und der Resize-Einstellung AWT, Swing, JavaFX & SWT 2
J Inhalt eines Scrollpane speichern AWT, Swing, JavaFX & SWT 3
M Eigen gemaltes JPanel im ScrollPane. klappt nicht. :-( AWT, Swing, JavaFX & SWT 10
M Wo bleibt mein ScrollPane? AWT, Swing, JavaFX & SWT 3
D Probleme mit TableLayoutManager und ScrollPane AWT, Swing, JavaFX & SWT 3
M Problem bei Verbinden v. jTable, ScrollPane u. JLabel AWT, Swing, JavaFX & SWT 5
G Anwendung um Scrollpane erweitern AWT, Swing, JavaFX & SWT 2
G Scrollpane in null-Layout einfügen AWT, Swing, JavaFX & SWT 5
N Frame in ScrollPane einfügen AWT, Swing, JavaFX & SWT 5
J Balken von ScrollPane immer unten AWT, Swing, JavaFX & SWT 6
Z Probleme mit eigenem Canvas und ScrollPane AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben