Podział JFrame

0

Cześć wszystkim,

uczę się Javy od około 2-3 tygodni (to moja pierwsza styczność z programowaniem). Aktualnie jestem już przy końcu kursu z Udemy i postanowiłem sprawdzić co potrafię, a z czym mam problem i muszę przyznać, że zawiesiłem się dość szybko. Otóż mam problem z podzieleniem JFrame tak, aby rozkład przypominał ten z obrazka w załączniku. Aktualnie stworzone są dwa JPanel, jeden do buttonów "Account List" itd. i jeden, który miał służyć jako największy panel na obrazku. Został do stworzenia panel po lewej stronie i niestety nie mogę sobie z tym poradzić. Od razu pozwolę zadać sobie drugie pytanie. Otóż buttony "Account List" "Cash Flow" itd. będą zmieniały widok na największym panelu (będą tam zupełnie inne funkcje). W jaki sposób najlepiej zaprogramować tę zmianę? Kliknięcie w button powinno zmieniać panel na inny stworzony specjalnie pod ten button, czy całkowicie nową ramkę, a może ramkę wewnętrzną?

Z góry serdecznie dziękuję za poświęcony czas. Będę niezmiernie wdzięczny za nakierowanie, bo mam w głowie puzzle, których nie potrafię złożyć w obrazek. :-)

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



public class Main extends JFrame{

    public Main()
    {
        initComponents();
    }
    
    public void initComponents()
    {
       this.setTitle("FinanApp");
       this.setSize(700, 500);
       this.setLocationRelativeTo(null);
       this.add(jmb, BorderLayout.NORTH);
      jmb.add(jFile);
        jFile.setMnemonic(KeyEvent.VK_F);
       jmb.add(jEdit);
        jEdit.setMnemonic(KeyEvent.VK_E);
       jmb.add(jTools);
        jTools.setMnemonic(KeyEvent.VK_T);
       jFile.add(jFileNew);
        jFileNew.setMnemonic(KeyEvent.VK_N);
       jFileNew.add(jFileNewAccount);
       jFileNew.add(jFileNewProfile);
       jFile.addSeparator();
       jFile.add(jFileOpen);
        jFileOpen.setMnemonic(KeyEvent.VK_O);
       jFile.add(jFileSave);
        jFileSave.setMnemonic(KeyEvent.VK_S);
       jFile.addSeparator();
       jFile.add(jFileExport);
        jFileExport.setMnemonic(KeyEvent.VK_E);
       jFile.add(jFilePrint);
        jFilePrint.setMnemonic(KeyEvent.VK_P);
       jFile.addSeparator();
       jFile.add(jFileSaveAndExit);
       jFile.add(jFileExit);
        jFileExit.setMnemonic(KeyEvent.VK_X);
       jEdit.add(jEditCut);
        jEditCut.setMnemonic(KeyEvent.VK_T);
       jEdit.add(jEditCopy);
        jEditCopy.setMnemonic(KeyEvent.VK_C);
       jEdit.add(jEditPaste);
        jEditPaste.setMnemonic(KeyEvent.VK_P);
       jEdit.add(jEditUndo);
        jEditUndo.setMnemonic(KeyEvent.VK_U);
       jTools.add(jToolsCalculator);
       jToolsCalculator.add(jToolsCalculatorCredit);
       jToolsCalculator.add(jToolsCalculatorInvest);
       jTools.add(jToolsSummary);
       
       this.add(jPanel);
       jPanel.add(accountList, BorderLayout.CENTER);
        accountList.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               tmp.setText("Account List");
           }
        });
       jPanel.add(accountBills);
        accountBills.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               tmp.setText("Bills");
           }
        });
       jPanel.add(accountCashFlow);
       jPanel.add(categories);
       
       this.add(jPanelView, BorderLayout.SOUTH);
       
       
       jPanelView.add(tmp);
       
       this.setDefaultCloseOperation(EXIT_ON_CLOSE);
       
    }
    
       JMenuBar jmb = new JMenuBar();
       
       JMenu jFile = new JMenu("File");
            
       JMenu jEdit = new JMenu("Edit");
       JMenu jTools = new JMenu("Tools");
       JMenu jFileNew = new JMenu("New");
       JMenu jToolsCalculator = new JMenu("Calculator");
       
       JMenuItem jFileNewAccount = new JMenuItem("New account");
       JMenuItem jFileNewProfile = new JMenuItem("New profile");
       JMenuItem jFileOpen = new JMenuItem("Open");
       JMenuItem jFileSave = new JMenuItem("Save");
       JMenuItem jFileExport = new JMenuItem("Export");
       JMenuItem jFilePrint = new JMenuItem("Print");
       JMenuItem jFileSaveAndExit = new JMenuItem("Save & Exit");
       JMenuItem jFileExit = new JMenuItem("Exit");
       JMenuItem jEditCut = new JMenuItem("Cut");
       JMenuItem jEditCopy = new JMenuItem("Copy");
       JMenuItem jEditPaste = new JMenuItem("Paste");
       JMenuItem jEditUndo = new JMenuItem("Undo");
       JMenuItem jToolsSummary = new JMenuItem("Summary");
       JMenuItem jToolsCalculatorCredit = new JMenuItem("Credit");
       JMenuItem jToolsCalculatorInvest = new JMenuItem("Investing");
       
       JPanel jPanel = new JPanel();
       JButton accountList = new JButton("Account List");
       JButton accountBills = new JButton("Bills");
       JButton accountCashFlow = new JButton("Cash Flow");
       JButton categories = new JButton("Categories");
       
       JPanel jPanelView = new JPanel();
       JLabel tmp = new JLabel("Bla bla");
    
    public static void main(String[] args) {
        new Main().setVisible(true);
      }
}

1
  1. Nie warto marnować czasu na Swinga.
  2. Serio nie warto.
  3. Tych Swingowych Layout Managerów to nie ogarniają pewnie nawet ich twórcy i zmuszenie czegoś żeby wyglądało po ludzku jest generalnie dość trudne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1