Szukaj…


Uwagi

Zamykanie aplikacji po zamknięciu okna

Łatwo zapomnieć o zamknięciu aplikacji, gdy okno jest zamknięte. Pamiętaj, aby dodać następujący wiersz.

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

Tworzenie pustego okna (JFrame)

Tworzenie JFrame

Tworzenie okna jest łatwe. Musisz tylko utworzyć JFrame .

JFrame frame = new JFrame();

Tytuł okna

Możesz nadać swojemu tytułowi tytuł. Możesz to zrobić, przekazując ciąg znaków podczas tworzenia JFrame lub wywołując frame.setTitle(String title) .

JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");

Ustawianie rozmiaru okna

Po utworzeniu okno będzie tak małe, jak to możliwe. Aby powiększyć, możesz jawnie ustawić jego rozmiar:

frame.setSize(512, 256);

Możesz też ustawić rozmiar ramki w oparciu o rozmiar jej zawartości za pomocą metody pack() .

frame.pack();

Metody setSize() i pack() wykluczają się wzajemnie, więc używaj jednej lub drugiej.

Co robić w oknie Zamknij

Pamiętaj, że aplikacja nie zostanie zamknięta po zamknięciu okna. Możesz zamknąć aplikację po zamknięciu okna, informując JFrame aby to zrobił.

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

Możesz też powiedzieć okno, aby zrobiło coś innego, gdy jest zamknięte.

WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action

Tworzenie okienka treści

Opcjonalnym krokiem jest utworzenie okienka zawartości dla twojego okna. Nie jest to konieczne, ale jeśli chcesz to zrobić, utwórz JPanel i wywołaj frame.setContentPane(Component component) .

JPanel pane = new JPanel();
frame.setContentPane(pane);

Pokazywanie okna

Po jego utworzeniu będziesz chciał utworzyć komponenty, a następnie wyświetlić okno. Wyświetlanie okna odbywa się jako takie.

frame.setVisible(true);

Przykład

Dla tych, którzy lubią kopiować i wklejać, oto przykładowy kod.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane

frame.setVisible(true); //Show the window

Przykładowe dane wyjściowe

Dodawanie komponentów

Składnik jest pewnego rodzaju elementem interfejsu użytkownika, takim jak przycisk lub pole tekstowe.

Tworzenie komponentu

Tworzenie komponentów jest prawie identyczne jak tworzenie okna. Zamiast tworzyć JFrame , tworzysz ten komponent. Na przykład, aby utworzyć JButton , wykonaj następujące czynności.

JButton button = new JButton();

Wiele komponentów może mieć parametry przekazane im podczas tworzenia. Na przykład przycisk może otrzymać tekst do wyświetlenia.

JButton button = new JButton("Super Amazing Button!");

Jeśli nie chcesz tworzyć przycisku, listę typowych składników można znaleźć w innym przykładzie na tej stronie.

Parametry, które można im przekazać, różnią się w zależności od komponentu. Dobrym sposobem sprawdzenia, co mogą zaakceptować, jest sprawdzenie parametrów w twoim IDE (jeśli go używasz). Domyślne skróty są wymienione poniżej.

  • IntelliJ IDEA - Windows / Linux: CTRL + P
  • IntelliJ IDEA - OS X / macOS: CMD + P
  • Zaćmienie: CTRL + SHIFT + Space
  • NetBeans: CTRL + P

Przykład przeglądania informacji o parametrach metody w IntelliJ IDEA

Pokazywanie komponentu

Po utworzeniu komponentu zwykle ustawia się jego parametry. Następnie musisz go gdzieś umieścić, na przykład na ramce JFrame lub w okienku zawartości, jeśli ją utworzyłeś.

frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever

Przykład

Oto przykład utworzenia okna, ustawienia okienka treści i dodania do niego przycisku.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane

JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane

frame.setVisible(true); //Show the window

Przykładowe dane wyjściowe

Ustawianie parametrów dla komponentów

Komponenty mają różne parametry, które można dla nich ustawić. Różnią się one w zależności od komponentu, więc dobrym sposobem na sprawdzenie, jakie parametry można ustawić dla komponentów, jest rozpoczęcie pisania componentName.set nazwa_komponentu.set i umożliwienie autouzupełniania IDE (jeśli używasz IDE) sugerowania metod. Domyślny skrót w wielu IDE, jeśli nie pojawia się automatycznie, to CTRL + Space .

Autouzupełnianie w IntelliJ IDEA

Wspólne parametry, które są wspólne dla wszystkich komponentów

Opis metoda
Ustawia najmniejszy rozmiar, jaki może być komponent (tylko jeśli menedżer układu honoruje właściwość minimumSize) setMinimumSize(Dimension minimumSize)
Ustawia największy rozmiar, jaki może być komponent (tylko jeśli menedżer układu honoruje właściwość maximumSize) setMaximumSize(Dimension maximumSize)
Ustawia preferowany rozmiar komponentu (tylko jeśli menedżer układu honoruje właściwość preferSize) setPreferredSize(Dimension preferredSize)
Pokazuje lub ukrywa komponent setVisible(boolean aFlag)
Ustawia, czy komponent powinien reagować na dane wejściowe użytkownika setEnabled(boolean enabled)
Ustawia czcionkę tekstu setFont(Font font)
Ustawia tekst podpowiedzi setToolTipText(String text)
Ustawia kolor tła komponentu setBackground(Color bg)
Ustawia kolor pierwszego planu (kolor czcionki) komponentu setForeground(Color bg)

Wspólne parametry w innych komponentach

Wspólne elementy Opis metoda
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField Ustawia wyświetlany tekst setText(String text)
JProgressBar , JScrollBar , JSlider , JSpinner Ustaw wartość liczbową między wartościami minimalną i maksymalną składnika setValue(int n)
JProgressBar , JScrollBar , JSlider , JSpinner Ustaw najmniejszą możliwą wartość, value może być właściwość value setMinimum(int n)
JProgressBar , JScrollBar , JSlider , JSpinner Ustaw największą możliwą wartość, value może być właściwość value setMaxmimum(int n)
JCheckBox , JToggleBox Ustawia, czy wartość jest prawdą czy fałszem (np .: Czy pole wyboru powinno być zaznaczone?) setSelected(boolean b)

Wspólne elementy

Opis Klasa
Przycisk JButton
Pole wyboru JCheckBox
Rozwijane menu / pole kombi JComboBox
Etykieta JLabel
Lista JList
Pasek menu JMenuBar
Menu na pasku menu JMenu
Pozycja w menu JMenuItem
Płyta JPanel
Pasek postępu JProgressBar
Przycisk radiowy JRadioButton
Pasek przewijania JScrollBar
Suwak JSlider
Spinner / Number picker JSpinner
Stół JTable
Drzewo JTree
Pole tekstowe / pole tekstowe z wieloma wierszami JTextArea
Pole tekstowe JTextField
Pasek narzędzi JToolBar

Tworzenie interaktywnych interfejsów użytkownika

Posiadanie przycisku jest dobre i dobre, ale po co kliknięcie go nic nie robi? ActionListener s służy do informowania przycisku lub innego komponentu, aby zrobił coś, gdy jest on aktywowany.

Dodawanie ActionListener odbywa się jako takie.

buttonA.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //Code goes here...
        System.out.println("You clicked the button!");
    }
});

Lub jeśli używasz Java 8 lub nowszej ...

buttonA.addActionListener(e -> {
    //Code
    System.out.println("You clicked the button!");
});

Przykład (Java 8 i wyżej)

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);

JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
    //Code goes here
    System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);

frame.setVisible(true); //Show the window

Organizowanie układu komponentu

Dodanie składników jeden po drugim powoduje, że interfejs użytkownika jest trudny w użyciu, ponieważ wszystkie składniki są gdzieś . Składniki są uporządkowane od góry do dołu, każdy element w osobnym „rzędzie”.

Aby temu zaradzić i zapewnić programistom możliwość łatwego układania komponentów Swing ma LayoutManager .

Te narzędzia LayoutManagers zostały szerzej omówione we wstępie do Menedżerów układów, a także w osobnych tematach Menedżera układów:



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow