• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Menu aplikacji, dodanie nowego okna

Object Storage Arubacloud
+1 głos
696 wizyt
pytanie zadane 28 grudnia 2016 w Java przez niko64 Użytkownik (630 p.)

Jak zrobić coś takiego, że po kliknięciu na przycisk przechodzi się do nowego okna, ale nie żeby się nowe generowało tylko coś na wzór menu, tak jak w grach, np. klikamy opcje i wchodzimy w opcje potem możemy cofnąć i być w głównym menu. Póki co udało mi się zrobić coś takiego:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Objects;

public class Main extends JFrame implements ActionListener
{
    JButton button_start, button_options, button_exit;
    JLabel label_viewtext;

    public Main()
    {
        setSize(720,480);
        setTitle("app");
        setLayout(null);

        button_start = new JButton("Start");
        button_start.setBounds(50,270,120,30);
        add(button_start);
        button_start.addActionListener(this);

        button_options = new JButton("Opcje");
        button_options.setBounds(50,320,120,30);
        add(button_options);
        button_options.addActionListener(this);

        button_exit = new JButton("Wyjście z gry");
        button_exit.setBounds(50,370,120,30);
        add(button_exit);
        button_exit.addActionListener(this);

        label_viewtext = new JLabel("");
        label_viewtext.setBounds(50, 50, 400, 50);
        label_viewtext.setForeground(new Color(232, 95, 0));
        label_viewtext.setFont(new Font("Arial", Font.BOLD, 40));
        add(label_viewtext);
    }

    public static void main(String[] args)
    {
        Main window = new Main();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);
    }

    public void actionPerformed(ActionEvent e)
    {
        Object source = e.getSource();
        if(source==button_start) {
            label_viewtext.setText("Gra nie gotowa");
        }
        else if (source==button_options) {
            label_viewtext.setText("Opcje nie gotowe");
        }
        else if (source==button_exit) {
            dispose();
        }
    }
}

 

1 odpowiedź

0 głosów
odpowiedź 28 grudnia 2016 przez nemezisso Użytkownik (860 p.)
Tu masz odpowiedz:

http://stackoverflow.com/questions/18091172/how-do-i-create-2-frames-in-java-and-link-them-together

Następnym razem nie musisz kasować postów i dodawać następnego, bo może ktoś inny skorzysta.
komentarz 28 grudnia 2016 przez niko64 Użytkownik (630 p.)

okej więc stworzyłem nową klasę nazwałem ją Options.java i tam umieszczę kod który będę chciał wyświetlić w nowej "ramce", ale wciąż się gubię w głównym kodzie i nie wiem gdzie dokładnie umieścić to:

FirstGUI frame1 = new FirstGUI("Title text");
frame1.setVisible(true);

i czy w ogóle tak ma to wyglądać

komentarz 28 grudnia 2016 przez nemezisso Użytkownik (860 p.)

To musisz umieścić w main:

public static void main(String[] args)

Możesz to zrobić np tak:

Main window = new Main();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);
        window.dispose();
        Options frame = new NewOptions();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

Jak dasz tak w main powinno włączyć się pierwsze okienko i od razu zamknąć i otworzyć okienko z klasy Options.

I u Ciebie projekt nazywa się Main, dziwnie to wygląda.

komentarz 28 grudnia 2016 przez niko64 Użytkownik (630 p.)

ogólnie dzieje się tak:

Options frame = new NewOptions(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);

czyli że są błędy

komentarz 28 grudnia 2016 przez nemezisso Użytkownik (860 p.)
Są bo się pomyliłem :P. Spójrz na kod. Options frame = new "NewOptions();" Tutaj zrobiłem błąd. Robisz obiekt klasy frame i go inicjalizujesz. Czyli powinno być....

Options frame= new Options();
komentarz 28 grudnia 2016 przez niko64 Użytkownik (630 p.)

to rozwiązuje część :)

ale z setDefaultCloseOperation oraz setVisible wciąż coś nie gra 

Error:(48, 14) java: cannot find symbol
  symbol:   method setDefaultCloseOperation(int)
  location: variable frame of type Options

komentarz 28 grudnia 2016 przez nemezisso Użytkownik (860 p.)
Daj cały kod bo to powinno akurat jest ok. Ogólnie wyskakuje Ci błąd, a nie wiesz o co chodzi szukasz w necie i w sekundę znajdziesz odpowiedź
komentarz 28 grudnia 2016 przez niko64 Użytkownik (630 p.)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Objects;

public class Main extends JFrame implements ActionListener
{
    JButton button_start, button_options, button_exit;
    JLabel label_viewtext;

    public Main()
    {
        setSize(720,480);
        setTitle("Agro'magedon I");
        setLayout(null);

        button_start = new JButton("Start");
        button_start.setBounds(50,270,120,30);
        add(button_start);
        button_start.addActionListener(this);

        button_options = new JButton("Opcje");
        button_options.setBounds(50,320,120,30);
        add(button_options);
        button_options.addActionListener(this);

        button_exit = new JButton("Wyjście z gry");
        button_exit.setBounds(50,370,120,30);
        add(button_exit);
        button_exit.addActionListener(this);

        label_viewtext = new JLabel("");
        label_viewtext.setBounds(50, 50, 400, 50);
        label_viewtext.setForeground(new Color(232, 95, 0));
        label_viewtext.setFont(new Font("Arial", Font.BOLD, 40));
        add(label_viewtext);
    }


    public static void main(String[] args)
    {
        Main window = new Main();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);
        window.dispose();
        Options frame= new Options();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e)
    {
        Object source = e.getSource();
        if(source==button_start) {
            label_viewtext.setText("Gra nie gotowa");
        }
        else if (source==button_options) {
            label_viewtext.setText("Opcje nie gotowe");
        }
        else if (source==button_exit) {
            dispose();
        }
    }
}

 

komentarz 28 grudnia 2016 przez nemezisso Użytkownik (860 p.)
Hmmmm, nie mam pojęcia wrzuciłem do siebie i wszystko chodzi.

Nie mam pomysłu o co może chodzić.
komentarz 28 grudnia 2016 przez niko64 Użytkownik (630 p.)
jak coś to robię to w IntelliJ IDEA Community Edition 2016.3.1(64)

Podobne pytania

+1 głos
2 odpowiedzi 964 wizyt
pytanie zadane 9 grudnia 2016 w C i C++ przez Yashe Dyskutant (7,720 p.)
0 głosów
1 odpowiedź 924 wizyt
pytanie zadane 22 lipca 2017 w HTML i CSS przez Vorex444 Dyskutant (9,610 p.)
0 głosów
1 odpowiedź 130 wizyt
pytanie zadane 28 lipca 2018 w Java przez Kabuuz Bywalec (2,820 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...