将所有java swing gui放在一个类中是否正常?
发布时间:2020-12-15 04:17:43 所属栏目:Java 来源:网络整理
导读:我刚刚开始进行摇摆开发并遇到问题.将整个GUI放入单个类是否正常?我正在构建的应用程序有一个显示多个不同“页面”的JFrame.例如,如果用户点击按钮,则他们将被带到具有不同布局的完全不同的页面.我已经配置了卡布局,到目前为止我构建的一张卡使用了GridBag
我刚刚开始进行摇摆开发并遇到问题.将整个GUI放入单个类是否正常?我正在构建的应用程序有一个显示多个不同“页面”的JFrame.例如,如果用户点击按钮,则他们将被带到具有不同布局的完全不同的页面.我已经配置了卡布局,到目前为止我构建的一张卡使用了GridBag布局.
那么,我的问题是 下面是我到目前为止的代码,我是新手,并且真的想要擅长它,所以如果你发现我错过的任何重大问题,请随时指出它们. 单个页面的代码: public class HomePage extends JPanel implements ActionListener{ private GridBagLayout gl; private JPanel frm; JButton newPersonalContact; HomePage(){ frm=new JPanel(); gl=new GridBagLayout(); GridBagConstraints gbc=new GridBagConstraints(); frm.setLayout(gl); newPersonalContact=new JButton("New Personal Contact"); JButton newBusinessContact=new JButton("New Business Contact"); JButton showAllContacts=new JButton("Show All Contacts"); JButton saveAndQuit=new JButton("Save and Quit"); JPanel top=new JPanel(); top.setBackground(new Color(218,165,32)); top.add(new JLabel("Western Governers University Presents:")); JPanel middle=new JPanel(); middle.setBackground(new Color(43,37,85)); GridLayout ge=new GridLayout(4,4); middle.setLayout(ge); middle.add(new JLabel("")); middle.add(new JLabel("")); middle.add(new JLabel("")); middle.add(new JLabel("")); middle.add(new JLabel("")); middle.add(newPersonalContact); middle.add(newBusinessContact); middle.add(new JLabel("")); middle.add(new JLabel("")); middle.add(showAllContacts); middle.add(saveAndQuit); middle.add(new JLabel(""));middle.add(new JLabel("")); middle.add(new JLabel("")); middle.add(new JLabel("")); JPanel bottom=new JPanel(); bottom.setBackground(new Color(218,32)); gbc.fill=GridBagConstraints.BOTH; gbc.weightx=1.0; gbc.weighty=2.0; gbc.gridx=0; gbc.gridy=0; frm.add(top,gbc); gbc.weighty=6.0; gbc.gridx=0; gbc.gridy=1; frm.add(middle,gbc); gbc.weighty=1.0; gbc.gridx=0; gbc.gridy=2; frm.add(bottom,gbc); newPersonalContact.addActionListener(this); newBusinessContact.addActionListener(this); showAllContacts.addActionListener(this); saveAndQuit.addActionListener(this); } public void actionPerformed(ActionEvent ae){ if (ae.getSource()==newPersonalContact){ //What goes here? } } public JPanel getFrame(){ return frm; } } GUI控制器的代码: public class GUIController { JFrame frm; CardLayout cl; Container pane; GUIController(){ frm=new JFrame(); frm.setSize(800,600); frm.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); JPanel card2=new JPanel(); card2.setBackground(Color.black); JPanel cards=new JPanel(new CardLayout()); cards.add(new HomePage().getFrame(),"Home"); cards.add(card2,"New Personal Contact"); pane=frm.getContentPane(); pane.add(cards,BorderLayout.CENTER); } public void start(){ this.frm.setVisible(true); } public void showCard(){ cl.show(pane,"Card2"); } } 虽然这是针对学校项目的,但GUI界面并不仅仅是我感兴趣的学习内容.谢谢你的帮助. 解决方法
不,我不建议将所有GUI代码放在课堂上 – 至少如果它变得很大并做了几件事.
在这种情况下,使用Mediator模式: >将子组件放到JPanel的自定义子类中 另请注意:如果您要学习GUI编程并且没有使用Swing的特定要求,请考虑使用较新的GUI工具包JavaFX. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |