Java Swing:Can';看不到扩展JPanel的类的组件

Java Swing:Can';看不到扩展JPanel的类的组件,java,swing,jpanel,extends,Java,Swing,Jpanel,Extends,我创建了这个类jpanelcase,它扩展了JPanel: public class JPanelCaso extends JPanel implements MouseListener{ JCheckBox checkBox; JTextArea textArea; String frasePerCliente = ""; private int distanzaDaBordi = 0; private int distanzaCheckTextA =

我创建了这个类jpanelcase,它扩展了JPanel:

public class JPanelCaso extends JPanel implements MouseListener{
    JCheckBox checkBox;
    JTextArea textArea;
    String frasePerCliente = "";
    private int distanzaDaBordi = 0;
    private int distanzaCheckTextA = 5;
    private SpringLayout layoutPnlCaso = new SpringLayout();

    /**
     * Costruttore della classe Caso
     * 
     * @param checkBox l' oggetto di tipo JCheckBox relativo al caso
     * @param textArea l' oggetto di tipo JtextArea relativo al caso
     */
    JPanelCaso(String strTitoloCaso, String frasePerCliente){
        this.addMouseListener(this);

        checkBox = new JCheckBox();
        checkBox.addMouseListener(this);

        textArea = new JTextArea(strTitoloCaso);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        textArea.addMouseListener(this);
        textArea.setEditable(false);

        this.frasePerCliente = frasePerCliente;

        componiPannello();

    }

    private void componiPannello() {
        this.setLayout(layoutPnlCaso);

        //Dispongo i controlli
        layoutPnlCaso.putConstraint(SpringLayout.WEST, checkBox, distanzaDaBordi, SpringLayout.WEST, this);
        layoutPnlCaso.putConstraint(SpringLayout.EAST, checkBox, -distanzaCheckTextA, SpringLayout.WEST, textArea);
        layoutPnlCaso.putConstraint(SpringLayout.WEST, textArea, -distanzaDaBordi, SpringLayout.WEST, this);
        layoutPnlCaso.putConstraint(SpringLayout.NORTH, checkBox, distanzaDaBordi, SpringLayout.NORTH, this);
        layoutPnlCaso.putConstraint(SpringLayout.NORTH, textArea, distanzaDaBordi, SpringLayout.NORTH, this);
        layoutPnlCaso.putConstraint(SpringLayout.SOUTH, textArea, distanzaDaBordi, SpringLayout.SOUTH, this);

        this.add(checkBox);
        this.add(textArea);

    }
}
然后,我在一个JPanel中插入各种JPanelCaso,这是另一个JPanel的一张卡片,具有卡片布局:

public class GuidaBpoEse{

    public static void main(String[] args) {

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new GuidaBpoEse();
            }
        }); 
    }

    public GuidaBpoEse() {      
        creaFinestraMain();
    }


    Workbook wbDbCommentiEse = null;
    Dimension grandezzaSchermo = Toolkit.getDefaultToolkit().getScreenSize();
    int larghezzaMain = (int)(grandezzaSchermo.getWidth() * 0.20);
    int altezzaMain = (int)(grandezzaSchermo.getHeight() * 0.95);
    Point inizioMain = new Point((int)grandezzaSchermo.getWidth() - larghezzaMain, 0);
    JFrame frmMain = new JFrame();

    int nFogli;
    int iFoglio = 0;
    int righe;  //conta le righe del iFoglio fino all' ultima piena
    int colonne;    //conta le colonne del iFoglio fino all' ultima piena
    int riga;
    int colonna;

    int distanzaTraCasi = 5;
    int distanzaDaBordi = 0;

    static JTextArea txtaFrasiTrovate;

    private void creaFinestraMain() {
        try {
            wbDbCommentiEse = Workbook.getWorkbook(new File("db.xls"));
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        nFogli = wbDbCommentiEse.getNumberOfSheets();

        ...

        SpringLayout layoutMain = new SpringLayout();
        JPanel pnlMain = new JPanel(layoutMain);

        ...

            // Pannello della scelta delle macrocasistiche ==================================================

            JPanel pnlMacrocasistiche = new JPanel(new GridLayout(nFogli - 2, 1));
            JScrollPane spnlMacrocasistiche = null;
            JButton[] btnMacrocasistiche = new JButton[nFogli]; //Salterò il primo elemento per far corrispondere l' indice dei fogli nel file excel con l' indice dei fogli nell' array di tasti
            Sheet sAppoggio;
            iFoglio++;
            while (iFoglio < nFogli - 1) {
                iFoglio++;
                sAppoggio = wbDbCommentiEse.getSheet(iFoglio);
                btnMacrocasistiche[iFoglio] = new JButton(sAppoggio.getName());
                pnlMacrocasistiche.add(btnMacrocasistiche[iFoglio]);
                btnMacrocasistiche[iFoglio].addMouseListener(new MouseListener() {

                    @Override
                    public void mouseEntered(MouseEvent arg0) {
                        JButton btnAppoggio = (JButton)arg0.getSource();
                        layoutPnlDettagli.show(pnlDettagli, btnAppoggio.getText());
                        frmDettagli.setVisible(true);
                    }

                    ...

                });
            }
            spnlMacrocasistiche = new JScrollPane(pnlMacrocasistiche);
            spnlMacrocasistiche.setBorder(BorderFactory.createTitledBorder("Macrocasistiche"));
            pnlMain.add(spnlMacrocasistiche);
            // ==============================================================================================



            //Posiziono spnlMacrocasistiche
            spnlMacrocasistiche.setPreferredSize(new Dimension((int)frmMain.getWidth(), (int)(frmMain.getHeight() * 0.4)));;
            layoutMain.putConstraint(SpringLayout.NORTH, spnlMacrocasistiche, distanzaDaBordi, SpringLayout.SOUTH, pnlDatiCliente);
            layoutMain.putConstraint(SpringLayout.WEST, spnlMacrocasistiche, distanzaDaBordi, SpringLayout.WEST, pnlMain);
            layoutMain.putConstraint(SpringLayout.EAST, spnlMacrocasistiche, -distanzaDaBordi, SpringLayout.EAST, pnlMain);

        frmMain.add(pnlMain);
        creaFinestraDettagliCasistiche();

        frmMain.validate();
        //frmMain.pack();
        frmMain.setVisible(true);
        frmMain.setAlwaysOnTop(true);


    }


    JFrame frmDettagli;
    JPanel pnlDettagli;
    JScrollPane spnlDettagli;
    CardLayout layoutPnlDettagli = new CardLayout();
    SpringLayout layoutPnlCasistiche = new SpringLayout();

    private void creaFinestraDettagliCasistiche() {
        int larghezzaFrmDettagli = (int)(grandezzaSchermo.getWidth() * 0.15);
        int altezzaFrmDettagli = altezzaMain;
        frmDettagli = new JFrame();
        frmDettagli.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frmDettagli.setTitle("Controllo documenti ESE");
        frmDettagli.setSize(larghezzaFrmDettagli, altezzaFrmDettagli);
        Point inizioFrmDettagli = new Point((int)(inizioMain.getX() - frmDettagli.getWidth()), (int)(inizioMain.getY()));
        frmDettagli.setLocation(inizioFrmDettagli);


            pnlDettagli = new JPanel(layoutPnlDettagli);
            Dimension dimMinPnlDettagli = new Dimension((int)(frmDettagli.getWidth()), (int)frmDettagli.getHeight());
            pnlDettagli.setPreferredSize(dimMinPnlDettagli);

            iFoglio = 1;
            Sheet sAppoggio;
            JPanel[] pnlCasistiche = new JPanel[nFogli];
            JPanelCaso[] pnlCaso;

            while (iFoglio < nFogli - 1) {
                iFoglio++;
                sAppoggio = wbDbCommentiEse.getSheet(iFoglio);
                righe = sAppoggio.getRows();
                colonne = sAppoggio.getColumns();
                riga = 0;
                colonna = 0;

                pnlCasistiche[iFoglio] = new JPanel(layoutPnlCasistiche);
                pnlCasistiche[iFoglio].setBorder(BorderFactory.createTitledBorder(sAppoggio.getName()));
                    pnlCaso = new JPanelCaso[righe];
                    while (riga < righe) {
                        pnlCaso[riga] = new JPanelCaso(sAppoggio.getCell(colonna, riga).getContents(), sAppoggio.getCell(colonna + 1, riga).getContents());


                        //pnlCasistiche[iFoglio].add(new JLabel("Prova"));

                        pnlCasistiche[iFoglio].setSize(frmDettagli.getSize());
                        if (riga == 0) {
                            layoutPnlCasistiche.putConstraint(SpringLayout.NORTH, pnlCaso[riga], distanzaDaBordi, SpringLayout.NORTH, pnlCasistiche[iFoglio]);
                            layoutPnlCasistiche.putConstraint(SpringLayout.WEST, pnlCaso[riga], distanzaDaBordi, SpringLayout.WEST, pnlCasistiche[iFoglio]);
                            layoutPnlCasistiche.putConstraint(SpringLayout.EAST, pnlCaso[riga], distanzaDaBordi, SpringLayout.EAST, pnlCasistiche[iFoglio]);
                        } else {
                            layoutPnlCasistiche.putConstraint(SpringLayout.NORTH, pnlCaso[riga], distanzaTraCasi, SpringLayout.SOUTH, pnlCaso[riga - 1]);
                            layoutPnlCasistiche.putConstraint(SpringLayout.WEST, pnlCaso[riga], distanzaDaBordi, SpringLayout.WEST, pnlCasistiche[iFoglio]);
                            layoutPnlCasistiche.putConstraint(SpringLayout.EAST, pnlCaso[riga], distanzaDaBordi, SpringLayout.EAST, pnlCasistiche[iFoglio]);
                        }
                        pnlCasistiche[iFoglio].add(pnlCaso[riga]);
                        riga++;
                    }

                    pnlDettagli.add(pnlCasistiche[iFoglio], sAppoggio.getName());


            }

            pnlDettagli.addMouseListener(new MouseListener() {

                ...

                @Override
                public void mouseExited(MouseEvent e) {
                    frmDettagli.dispose();

                }

                ...

            });

            frmDettagli.add(pnlDettagli);
            frmDettagli.validate();
    }

}
公共类指南{
公共静态void main(字符串[]args){
javax.swing.SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
新指南();
}
}); 
}
公共指南(){
creaFinestraMain();
}
工作簿wbDbCommentiEse=null;
维度grandezzaSchermo=Toolkit.getDefaultToolkit().getScreenSize();
int larghezzaMain=(int)(grandezzaSchermo.getWidth()*0.20);
int-altezzaMain=(int)(grandzzaschermo.getHeight()*0.95);
Point Inighiomain=新点((int)grandzzaschermo.getWidth()-larghezzaMain,0);
JFrame frmMain=新JFrame();
int-nFogli;
int-iFoglio=0;
int righe;//控制所有最终的权利
int colonne;//请控制iFoglio fino all'ultima piena
因特里加;
内柱廊;
int distanzaTraCasi=5;
int distanzaDaBordi=0;
静态JTextArea txtaFrasiTrovate;
私有void creaFinestraMain(){
试一试{
wbdcommentiese=Workbook.getWorkbook(新文件(“db.xls”);
}捕获(双飞例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
nFogli=wbdcommentiese.getNumberOfSheets();
...
SpringLayoutLayoutMain=新的SpringLayout();
JPanel pnlMain=新的JPanel(layoutMain);
...
//宏观科学研究中心==================================================
JPanel pnlmacrostiche=新JPanel(新网格布局(nFogli-2,1));
JScrollPane spnlMacrocasistiche=null;
JButton[]btnMacrocasistiche=new JButton[nFogli];//根据far更正的原始元素列表文件excel con l'indice dei fogli nell'数组
萨波吉奥;
iFoglio++;
while(iFoglio    frmMain.add(pnlMain);
    //frmMain.pack();
    frmMain.setVisible(true);
    frmMain.setAlwaysOnTop(true);

    creaFinestraDettagliCasistiche();
    frmMain.add(pnlMain);
    creaFinestraDettagliCasistiche();
    frmMain.pack();
    frmMain.setVisible(true);
    frmMain.setAlwaysOnTop(true);