我是相当新的的Java Swing和我遇到了一些问题。
- 作为一个方面的问题,使一个相当大的Java Swing应用程序的时候,什么是分裂代码的最佳方式? 在我来说,我希望有一个具有布局就像微软的Word那里是充满按钮和其中的变化是基于在工具栏按下按钮时做了一个主要的JPanel一个JToolBar中的应用程序。
因此,如下面的代码中,我有一个JFrame,我调用类的mainPanel为了创建一个面板,并添加工具栏的一个按钮。 当该按钮被按下它增加了一个按钮到面板上。 问题是当你点击按钮没有任何显示,直到你改变窗口大小(在我的情况,我只是手动拖动屏幕,使其更大)。
public class Main { private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("MathMaker"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create the menu bar. Make it have a green background. //MainToolBar mainTB = new MainToolBar(); MainPanel mainPanel = new MainPanel(); frame.getContentPane().add(mainPanel.getGUI(), BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
公共类mainPanel中实现的ActionListener { JPanel的mPanel; JToolBar中mToolBar; JButton的addQuestion; 公共mainPanel中(){ mPanel =新JPanel(新的BorderLayout()); mToolBar =新JToolBar的(); addQuestion =新的JButton( “测试”);
addQuestion.addActionListener(this); mPanel.setLayout(new BorderLayout()); mPanel.setBackground(new Color(248, 213, 131)); mPanel.setPreferredSize(new Dimension(200, 180)); mToolBar.add(addQuestion); mPanel.add(mToolBar, BorderLayout.PAGE_START); } public JComponent getGUI() { return mPanel; } @Override public void actionPerformed(ActionEvent e) { JButton temp = new JButton("temp"); mPanel.add(temp); }
}