同一文件中的多个JPanels定义

时间:2015-12-09 21:15:07

标签: java swing class jpanel

是否可以在单个文件(类)中为您的程序定义多个JPanel? 通常这样做的方法是将JPanel定义为文件中的顶级类,然后将侦听器类定义为顶级类中的嵌套类。但是,如果要在同一文件中定义多个面板(及其侦听器类),而不是创建多个文件,该怎么办?对不起,我是Java的新手,事实上所有东西都需要放在一个类中,这对我来说有点混乱。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用内部类,例如......

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new GridBagLayout());
            add(new JLabel("Bananas are green"));
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }

    }

}

有关详细信息,请参阅Inner Class Example