Question

Problème:

Ma mise en page du programme est très bien, comme ci-dessous avant d'ajouter JToolBar à BorderLayout.PAGE_START Voici une capture d'écran avant JToolBar est ajouté: text alt

Voici comment cela ressemblait après avoir ajouté JToolBar: text alt

Mai je sais ce que j'ai fait mal?

Voici le code je:

    //Create the text pane and configure it.
    textPane = new JTextPane();
    -snipped code-
    JScrollPane scrollPane = new JScrollPane(textPane);
    scrollPane.setPreferredSize(new Dimension(300, 300));

    //Create the text area for the status log and configure it.
    changeLog = new JTextArea(5, 30);
    changeLog.setEditable(false);
    JScrollPane scrollPaneForLog = new JScrollPane(changeLog);

    //Create a split pane for the change log and the text area.
    JSplitPane splitPane = new JSplitPane(
            JSplitPane.VERTICAL_SPLIT,
            scrollPane, scrollPaneForLog);
    splitPane.setOneTouchExpandable(true);

    //Create the status area.
    JPanel statusPane = new JPanel(new GridLayout(1, 1));
    CaretListenerLabel caretListenerLabel =
            new CaretListenerLabel("Caret Status");
    statusPane.add(caretListenerLabel);

    //Create the toolbar
    JToolBar toolBar = new JToolBar();
    -snipped code-

    //Add the components.
    getContentPane().add(toolBar, BorderLayout.PAGE_START);
    getContentPane().add(splitPane, BorderLayout.CENTER);
    getContentPane().add(statusPane, BorderLayout.PAGE_END);

    //Set up the menu bar.
    actions = createActionTable(textPane);
    JMenu editMenu = createEditMenu();
    JMenu styleMenu = createStyleMenu();
    JMenuBar mb = new JMenuBar();
    mb.add(editMenu);
    mb.add(styleMenu);
    setJMenuBar(mb);

S'il vous plaît aider, je suis nouveau bâtiment GUI, et je ne me sens pas en utilisant Netbeans de glisser-déposer de l'interface utilisateur pour moi ... Je vous remercie à l'avance.

Était-ce utile?

La solution

Au lieu d'utiliser setSize() sur le JFrame, définissez la taille préférée de votre composant central comme vous le faites maintenant et Invoke pack() qui « provoque cette fenêtre pour être dimensionnée à la taille préférée et mise en page de ses sous-composants. » l'expansion sur @ l'exemple de Bragaadeesh,

public static void main(String[] args) {
    TestFrame frame = new TestFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.build();
    frame.pack();
    frame.setVisible(true);
}

Ensuite, passez à scrollPane.setPreferredSize(new Dimension(500, 300)) ou JTextArea changeLog = new JTextArea(10, 30) pour voir la différence.

Autres conseils

Je ne sais pas quel est le problème. J'ai essayé de l'exécuter sur mon système en fixant les problèmes de compilation. Voici le code et capture d'écran.

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

public class TestFrame extends JFrame{
    public static void main(String[] args) {
        TestFrame frame = new TestFrame();
        frame.build();
        frame.setVisible(true);

    }

    public void build(){
        setSize(600,600);
        //Create the text pane and configure it.
        JTextPane textPane = new JTextPane();

        JScrollPane scrollPane = new JScrollPane(textPane);
        scrollPane.setPreferredSize(new Dimension(300, 300));

        //Create the text area for the status log and configure it.
        JTextArea changeLog = new JTextArea(5, 30);
        changeLog.setEditable(false);
        JScrollPane scrollPaneForLog = new JScrollPane(changeLog);

        //Create a split pane for the change log and the text area.
        JSplitPane splitPane = new JSplitPane(
                JSplitPane.VERTICAL_SPLIT,
                scrollPane, scrollPaneForLog);
        splitPane.setOneTouchExpandable(true);

        //Create the status area.
        JPanel statusPane = new JPanel(new GridLayout(1, 1));
        JLabel caretListenerLabel =
                new JLabel("Caret Status");
        statusPane.add(caretListenerLabel);

        //Create the toolbar
        JToolBar toolBar = new JToolBar();
        toolBar.add(new JButton("Btn1"));
        toolBar.add(new JButton("Btn2"));
        toolBar.add(new JButton("Btn3"));
        toolBar.add(new JButton("Btn4"));

        //Add the components.
        getContentPane().add(toolBar, BorderLayout.PAGE_START);
        getContentPane().add(splitPane, BorderLayout.CENTER);
        getContentPane().add(statusPane, BorderLayout.PAGE_END);

        //Set up the menu bar.
        JMenu editMenu = new JMenu("test");
        JMenu styleMenu = new JMenu("test");
        JMenuBar mb = new JMenuBar();
        mb.add(editMenu);
        mb.add(styleMenu);
        setJMenuBar(mb);

    }
}

EDIT:. Je comprends pourquoi maintenant

je peins pour me donner une estimation approximative des pixels, et auparavant je ne savais pas que la hauteur depuis le début de la barre de titre de cadre supérieur est compté! Alors, qui ajoute à ~ = 504. Je reçois maintenant.

Alors la prochaine fois que je dois régler la hauteur à peu près, je pense que je vais utiliser la peinture.

text alt


Hmmm bizarre. Je dois changer de:

//Display the window.
frame.setSize(640, 480);

à

//Display the window.
frame.setSize(640, 504);

Alors que cela fonctionne.

peut me enseigner comment quelqu'un d'estimer ou de définir la largeur / hauteur pour les composants? Parce que je voulais d'abord qu'il soit 640,480 mais apparemment maintenant il a besoin 640,504.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top