Avatar billede Slettet bruger
17. januar 2004 - 00:42 Der er 2 kommentarer og
1 løsning

JSplitPane og JScrollPanes

Hejsa eksperter... Jeg har en frame hvor jeg skal have repræsenteret et JTextArea og en JList. Begge disse er der knyttet nogle JScrollPane's på. Disse JScrollPanes bliver derefter knyttet til ContentPane på min JFrame i en JSplitPane... MEN problemet kommer nu. Jeg kan IKKE få ScrollBar'erne til at vise sig... når jeg indtaster noget i mit JTextArea vises der ikke nogle JScrollbars (hvis jeg skriver flere linier / kolonner end der kan vises), og tager jeg "fat" i JSplitPane så gøres mit JTextArea bare endnu større....

Kan det virkeligt passe at man ikke kan få det til at fungere sammen, altså 2 JScrollPane's i 1 JSplitPane?

Nå, i får lige lidt kode at se på (min setupGUI()-metode):

private void setupGUI() {
        Container pane = getContentPane();
        pane.setLayout(new BorderLayout());

        exceptionArea = new JTextArea();
        exceptionArea.setEditable(false);
        JScrollPane areaScroller = new JScrollPane(exceptionArea);
        ComponentUtilities.makeSmallScrollbars(areaScroller, 10);

        exceptionList = new JList();
        JScrollPane listScroller = new JScrollPane(exceptionList);
        listScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        ComponentUtilities.makeSmallScrollbars(listScroller, 10);

        JSplitPane splitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                exceptionArea, exceptionList);
        splitter.setDividerLocation(0.7);
        splitter.setResizeWeight(0.7);
        splitter.setOneTouchExpandable(true);

        pane.add(splitter);
    }

Nå, jeg smutter i seng nu... så må i se hvad i kan foreslå, imens jeg nupper 16 timers søvn, eller deromkring ;-)

Hyg jer eksperter.

PS: Dette må kvalificeres som et SVÆRT spørgsmål, derfor 60 point til den som kommer med en GOD, PÆN og FORNUFTIG løsning... ikke noget klyt-kode :-)
Avatar billede mikkelbm Nybegynder
17. januar 2004 - 00:52 #1
Kunne det tænkes at det er fordi du add'er dit JTextArea og JList til din JSplitPane og IKKE add'er dine JScrollPane's???
Avatar billede mikkelbm Nybegynder
17. januar 2004 - 00:59 #2
Det må det være. Dette lille eksempel kører efter hensigten ved mig:

import javax.swing.*;
import java.awt.*;

public class TestSplit extends JFrame
{
    public TestSplit()
    {
        setSize(400, 400);
       
        DefaultListModel listModel = new DefaultListModel();
        JList list = new JList(listModel);
       
        JTextArea textArea = new JTextArea();
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
       
        JScrollPane scroller1 = new JScrollPane(list);
        JScrollPane scroller2 = new JScrollPane(textArea);
       
        JSplitPane splitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scroller2, scroller1);
        splitter.setDividerLocation(0.7);
        splitter.setResizeWeight(0.7);
        splitter.setOneTouchExpandable(true);
       
        // smider lige nogle værdier i listen.
        for (int i = 0; i<40; i++)
            listModel.addElement("Test " + i);
       
        Container con = getContentPane();
        con.add(splitter, BorderLayout.CENTER);
    }   
   
    public static void main(String[] args)
    {
        TestSplit test = new TestSplit();
        test.show();
    }
}
Avatar billede Slettet bruger
17. januar 2004 - 11:49 #3
Som Homer (Fra Simpsons) ville ha' sagt.... DOH !!!!!

Tak for hjælpen mikkelbm, nogle gange glor man sig bare blind på sine egne fejl, du får dine point VELFORTJENT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester