Avatar billede rjung Nybegynder
16. marts 2003 - 00:30 Der er 4 kommentarer og
1 løsning

Panel

Er det muligt at "add" et panel på et panel når man har "extends" JPanel. Jeg har prøvet, men det giver enten en fejl eller de kommer til at ligge ved siden af hinanden.
RJung
Avatar billede kimjdoek Nybegynder
16. marts 2003 - 00:54 #1
Jeg ved godt det ikke er det bedste svar, men en nem løsning ville være at lave din GUI i eks. SunOne de har en "tegne" feature, hvor du simpelthen trækker tingene hen hvor du vil have dem...

hvis du ikke bryder dig om den løsning, kan du jo altid se bagom koden der nu bliver lavet, og skrive den selv hvis du ønsker det!

Kim
Avatar billede rjung Nybegynder
16. marts 2003 - 00:58 #2
Tak for din hjælp, men jeg vil nu gerne prøve at løse det "rigtigt" hvis man kan.
Avatar billede viht Nybegynder
16. marts 2003 - 01:23 #3
Det kan du sagtens. Et JPanel er en Composite container, så du kan frit tilføje flere paneler til den:

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

public class TestFrame extends JFrame {
   
    private StyledDocument document;
    private Style colorStyle;
   
    public TestFrame() {
        super("Test");
        setSize(400,400);
       
        JPanel mainPanel = new JPanel(new BorderLayout());
               
        JPanel subPanel = new JPanel(new BorderLayout());
       
        JTree tree = new JTree();
        JTextPane pane = new JTextPane();
        document = pane.getStyledDocument();
        colorStyle = document.addStyle("color", null);
        StyleConstants.setForeground(colorStyle, Color.blue);
        pane.setEditable(false);
       
        JSplitPane split = new JSplitPane(    JSplitPane.HORIZONTAL_SPLIT,
                                                        new JScrollPane(tree),
                                                        new JScrollPane(pane));
               
        JPanel topPanel = new JPanel();
        topPanel.add(new JLabel("Label"));
               
        JPanel buttonPanel = new JPanel();
        JButton button = new JButton("Tilføj tekst");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                try {
                    document.insertString(document.getLength(), "Quick brown fox jumps over lazy dog\n", colorStyle);
                }
                catch( BadLocationException ble ) {
                   
                }
                   
            }
        });
        buttonPanel.add(button);
       
        subPanel.add(topPanel, BorderLayout.NORTH);
        subPanel.add(split, BorderLayout.CENTER);
        subPanel.add(buttonPanel, BorderLayout.SOUTH);
       
        mainPanel.add(subPanel, BorderLayout.CENTER);
        getContentPane().add(mainPanel, BorderLayout.CENTER);
    }
}
class Go {
    public static void main(String[] args) {
      new TestFrame().show();
  }
}
Avatar billede viht Nybegynder
16. marts 2003 - 01:25 #4
P.S:
Hold dig fra GUI buildere, de er roden til alt ondt hvor definitionen på "ondt" er null layout.

Gør dig selv en tjeneste og lær at bruge LayoutManagers i stedet :)

Se bla. www.docjava.dk under Grafiske Brugergrænseflader.
Avatar billede =maddog= Nybegynder
16. marts 2003 - 02:19 #5
Hvis du gerne vil have flere panels i samme container på en måde så du kan tilgå dem (eksempelvis hvis et punkt bliver valgt i en menu eller en button bliver aktiveret) er CardLayout den LayoutManager du skal anvende. Du kan dog anvende en klasse kaldet CardPanel der er bygget til netop dette formål. Den findes i The Swing Connection på følgende URL:
http://java.sun.com/products/jfc/tsc/articles/cardpanel/index.html
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