Probleme mit JTabbedPane

  • Themenstarter Themenstarter Michael1616
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Michael1616

Gast
Hallo,

ich habe 2 Probleme und schaffe es einfach nicht sie zu lösen.

Ich habe einmal ein JTabbedPane mit vorerst 3 Tabs. Dann habe ich eine JScrollPane in der eine JTextPane und ein JLabel ist. Diese JScrollPane füge ich jedem Tab zu, doch es wird mir nur im 3. etwas angezeigt. Mein 2. Problem ist, dass die JTextPane abgeschnitten wird und keine Scrollbar angezeigt wird. Ich hoff es kann mir jemand weiterhelfen.

Code:
public JComponent createTabbedPane(){
		
		JTextPane textPane = new JTextPane();
		textPane.setText("test test test test test test test test test\n" +
				"test test test test\ntest test test test\ntest test test test\ntest test test test\n
test test test test\ntest test test test\ntest test test test\ntest test test test\n
test test test test\ntest test test test\ntest test test test\ntest test test test\n
test test test test\ntest test test test\ntest test test test\ntest test test test\n
test test test test\ntest test test test\ntest test test test\ntest test test test\n
				test test test test\n");
		
		JLabel lineNumbers = new JLabel();
		lineNumbers.setText("1");
		
		
		JPanel numbersAndText = new JPanel();
		numbersAndText.setPreferredSize(new Dimension(650,400));
		numbersAndText.setLayout(new BoxLayout(numbersAndText, BoxLayout.LINE_AXIS));
		numbersAndText.add(lineNumbers);
		numbersAndText.add(textPane);
		JScrollPane scrp = new JScrollPane(numbersAndText);
		
		
		// Register erzeugen, in das die Panels kommen
		JTabbedPane elem = new JTabbedPane();
		

		// Für jede Seite wird ein Panel erzeugt und dem Register hinzugefügt
		JPanel panel1 = new JPanel();
        panel1.add(scrp);
        elem.addTab("Seite 1", panel1);

		JPanel panel2 = new JPanel();
        panel2.add(scrp);
		elem.addTab("Seite 2", panel2);

		JPanel panel3 = new JPanel();
        panel3.add(scrp);
        elem.addTab("Seite 3", panel3);

		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(1, 1));
        panel.add(elem);
		return panel;
        
	}

Danke!
 
Man kann nicht ein und dieselbe Scrollpane auf mehrere Tabs legen. (Das geht prinzipdendingt nicht - jede Component (also auch die Scrollpane) hat z.B. eine Methode "getParent", die die übergeordnete Component liefert - und welches Tab sollte dann dort zurückgegeben werden?).

Du wirst dir etwas anderes überlegen müssen.
- Entweder, die ScrollPane aus den Tabs rausnehmen, und in die Tabs nur das reinlegen, was WIRKLICH in allen Tabs unterschiedlich ist.
- Oder mehrere ScrollPanes erstellen, und jedem Tab seine eigene ScrollPane hinzufügen (Das könte schwierig werden: In allen TextAreas soll ja das gleiche stehen - das ist dann vmtl. ziemlich kompliziert).
- Man könnte wohl auch dafür sorgen, dass die ScrollPane immer in der "sichtbaren" Tab liegt, aber das wäre evtl. recht murksig-hackig.
- ...
 
ok, danke!

jetzt habe ich noch das Problem das ich keinen Scrollbalken sehe und alles einfach abgeschnitten wird. Es ist wichtig das ich einen gemeinsamen Scrollbalken für die Textarea und Textpane habe.

Code:
JTextPane textPane = new JTextPane();
		textPane.setText("test test test test test test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n" +
				"test test test test\n");
		
		Color gray = new Color(255,240,245);
		
		JTextArea lineNumbers = new JTextArea();
		lineNumbers.setBackground(gray);
		lineNumbers.setColumns(1);
		lineNumbers.setText("1  \n2");
		
		
		JPanel numbersAndText = new JPanel();
		//numbersAndText.setPreferredSize(new Dimension(650,400));
		numbersAndText.setLayout(new BoxLayout(numbersAndText, BoxLayout.LINE_AXIS));
		numbersAndText.add(lineNumbers);
		numbersAndText.add(textPane);
		
		JScrollPane scrp = new JScrollPane(numbersAndText);

hoffentlich kann mir da auch noch jemand helfen. Danke!
 
Hat es einen Grund, dass du ein BoxLayout verwendest? Ich weiß nicht, wie das mit dem PreferredSize der enhaltenen Components umgeht.... Schonmal mit BorderLayout getestet?
Sonst... hab grad keine Lust, mir das was compilierbares draus zu basteln.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben