0
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();
}
}
}
我只想讓我的應用程序打開該菜單,剩下的就是空白,當從下拉菜單中按下公司時打開公司面板。這可能沒有打開另一個jFrame?如何使用ActionListener在JFrame內插入JPanel?
是的。不知道它是否與你使用類的方式一致。我只會製作1個gui文件和1個啓動文件,啓動gui。那麼您可以輕鬆訪問gui類中的框架並向其添加新的jpanel – XtremeBaumer
考慮一個CardLayout面板;它將其組件視爲一堆或「卡片」組合;當顯示一個時,其餘的部分隱藏在顯示的「下面」。您可以使用一張沒有任何內容的卡,然後在選擇正確的菜單選項時切換到您想要的任何一張。 – arcy