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);
}
}
- Podział JFrame.png (3 KB) - ściągnięć: 46