【问题标题】:Multiple JPanels definitions inside the same file同一文件中的多个 JPanel 定义
【发布时间】:2015-12-09 21:15:06
【问题描述】:

是否可以在单个文件(类)中为您的程序定义多个 JPanel? 通常的做法是将 JPanel 定义为文件中的顶级类,然后将侦听器类定义为顶级类中的嵌套类。但是,如果您想在同一个文件中定义多个面板(以及它们的侦听器类),而不是创建多个文件,该怎么办。抱歉,我是 Java 新手,所有东西都需要放在一个类中,这让我有点困惑。

【问题讨论】:

标签: java swing class jpanel


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多