Avatar billede OBS Novice
31. marts 2025 - 11:46 Der er 15 kommentarer

Window Builder i Eclipse

Hvordan kan jeg tilføje window builder  ?
Avatar billede arne_v Ekspert
31. marts 2025 - 15:32 #1
Help
Eclipse Marketplace
Search
windowsbuilder
install

Advarsel: sidste jeg prøvede windowsbuilder (10 år siden!) så virkede den ikke for godt.

Jeg ville skrive koden manuelt.
Avatar billede arne_v Ekspert
31. marts 2025 - 15:38 #2
Bemærk at der er 4 desktop GUI framework for Java:
* AWT
* Swing
* SWT
* JavaFX

Swing er det mest brugte og det som er nemmest at få hjælp til. Du kan finde masser af eksempler i Java tutorial, her på eksperten.dk, på StackOverflow etc..

Min anbefaling er Swing med manuelt skrevet kode.
Avatar billede arne_v Ekspert
31. marts 2025 - 15:39 #3
Vil du bruge JavaFX så hent OpenJFX og start med min artikel:

https://www.vajhoej.dk/arne/articles/javafx.html
Avatar billede OBS Novice
31. marts 2025 - 16:56 #4
Hvori Eclipse findes WindowsBuilder ( jeg mener at have dowloaded  WindowsBuilder) ?
Avatar billede arne_v Ekspert
31. marts 2025 - 17:02 #5
Start Eclipse
Help menu
Vælg marketplace
Search for windowsbuilder
Klik install
Svar på et antal spørgsmål
Avatar billede OBS Novice
31. marts 2025 - 17:13 #6
Jeg mener at have installeret windowsbuilder. Men hvori Eclipse finder jeg så windowsbuilder ?
Avatar billede arne_v Ekspert
31. marts 2025 - 17:34 #7
højreklik package
new
other
windowbuilder
swing designer
JFrame (eller en af de andre muligheder)

du switcher mellem source og design via tabs i bunden.
Avatar billede OBS Novice
31. marts 2025 - 20:19 #8
Tak for det
Jeg er så småt igang med windowbuilders  design via tabs i bunden.
Har lavet JFrame og prøver at indsætte labels, button og textfield. Efterhånden disse
labels, button og textfield  indsættes, placeres disse ved hinanden fra venstre til højre.
Jeg vil gerne styre selve placeringen af de forskellige komponenter, men hvordan ?
Avatar billede arne_v Ekspert
31. marts 2025 - 21:08 #9
Swing layout styres ved hjælp af de såkaldte layout managers.

Der er mange muligheder inkl. BorderLayout og BoxLayout. Default er FlowLayout.

Layout manager en en property på content pane i WindowBuilder.

Men skal man lave komplicerede layouts, så  har man et laout og så putter man JPanel's med et layout ind i det.
Avatar billede arne_v Ekspert
31. marts 2025 - 21:12 #10
Ups - GridLayout ikke BoxLayout.
Avatar billede arne_v Ekspert
31. marts 2025 - 21:34 #11
LayoutManager kan godt give folk grå hår de første gange.

Prøv at bygge og køre dette program.

LMFun.java:


import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class LMFun extends JFrame {
    private static final long serialVersionUID = 1L;
    public LMFun() {
        setTitle("LayoutManager fun");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(new JLabel("West"), BorderLayout.WEST);
        getContentPane().add(new JLabel("East"), BorderLayout.EAST);
        JPanel north = new JPanel();
        north.setLayout(new FlowLayout(FlowLayout.LEFT));
        north.add(new JLabel("North 1"));
        north.add(new JLabel("North 2"));
        north.add(new JLabel("North 3"));
        getContentPane().add(north, BorderLayout.NORTH);
        JPanel south = new JPanel();
        south.setLayout(new FlowLayout(FlowLayout.LEFT));
        south.add(new JLabel("South 1"));
        south.add(new JLabel("South 2"));
        south.add(new JLabel("South 3"));
        getContentPane().add(south, BorderLayout.SOUTH);
        JPanel center = new JPanel();
        center.setLayout(new GridLayout(2, 3));
        center.add(new JLabel("Center (1,1)"));
        center.add(new JLabel("Center (1,2)"));
        center.add(new JLabel("Center (1,3)"));
        center.add(new JLabel("Center (2,1)"));
        center.add(new JLabel("Center (2,2)"));
        center.add(new JLabel("Center (2,3)"));
        getContentPane().add(center, BorderLayout.CENTER);
        pack();
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new LMFun();
                f.setVisible(true);
            }
        });
    }
}
Avatar billede OBS Novice
Skrevet i går kl. 13:04 #12
Jeg prøvede at benytte FlowLayout med følgende eksempel:

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

public class FlowLayoutExample {
    public static void main(String[] args) {
       
        // Create a new JFrame
        JFrame frame = new JFrame("FlowLayout Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        // Set the layout manager to FlowLayout
        frame.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10)); // Center alignment, with horizontal and vertical gaps of 10 pixels
       
        // Create some buttons to add to the frame
        for (int i = 1; i <= 10; i++) {
            JButton button = new JButton("Button " + i);
            frame.add(button);
        }
       
        // Set the size of the frame
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}

Men denne linie driller:  frame.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));  hvordan kan jeg rette  denne linie ?
Avatar billede arne_v Ekspert
Skrevet i går kl. 14:34 #13
Hvad er problemet med den linie?
Avatar billede OBS Novice
Skrevet i går kl. 15:43 #14
Problemet med den linie er  beskrevet her:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method setLayout(FlowLayout) from the type JFrame refers to the missing type FlowLayout

    at Skabelon/Skabelon.FlowLayoutExample.main(FlowLayoutExample.java:14)
Avatar billede arne_v Ekspert
Skrevet i går kl. 18:44 #15
Det er en mystisk fejl.

Builder du med en anden Java version end den Eclipse bruger?

(det kan give problemer)
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