package database;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.SwingUtilities;
public class Application {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new ApplicationFrame("Application");
frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
public class ApplicationFrame extends JFrame {
private CompaniesPanel companiesPanel;
public ApplicationFrame(String title) {
super(title);
setLayout(new BorderLayout());
JMenuBar menuBar = new MenuBar("Menu");
Container container = getContentPane();
container.add(menuBar, BorderLayout.NORTH);
}
}
public class MenuBar extends JMenuBar {
public MenuBar(String title) {
super();
JMenu menuFile = new JMenu("File");
add(menuFile);
JMenu menuOpen = new JMenu("Open");
menuFile.add(menuOpen);
JMenuItem menuItemCompanies = new JMenuItem("Companies");
menuOpen.add(menuItemCompanies);
menuItemCompanies.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// In here I would like to take a CompaniesPanel and insert
// it into
// an ApplicationFrame if the Companies button is pressed on
// menu
}
});
}
}
public class CompaniesPanel extends JPanel {
public CompaniesPanel() {
Dimension size = getPreferredSize();
size.width = 250;
setPreferredSize(size);
setBorder(BorderFactory.createTitledBorder("Company Names"));
setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();
}
}
}
Я просто хочу, чтобы мое приложение открыло это меню, а остальное было пустым и откройте компанию CompaniesPanel, когда компании нажали в раскрывающемся меню. Возможно ли это, не открывая другой jFrame?Как вставить JPanel внутри JFrame с помощью ActionListener?
Да. не уверен, работает ли он с использованием классов. я бы просто сделал 1 файл gui и 1 начальный файл, который запускает gui. то вы можете легко получить доступ к кадру внутри класса gui и добавить к нему новый jpanel – XtremeBaumer
Рассмотрите панель CardLayout; он рассматривает свои компоненты как стек или колоду «карт»; когда один отображается, остальные из них скрыты «под» отображаемым. У вас может быть одна карта, в которой ничего не было, а затем переключитесь на то, что вам нужно, когда была выбрана правильная опция меню. – arcy