2015-12-09 4 views
0

Возможно ли определить несколько JPanels для вашей программы в одном файле (классе)? Как это обычно делается, вы определяете JPanel как верхний класс в файле, тогда вы определяете класс слушателя как вложенный класс внутри высшего класса. Но, если вы хотите определить несколько панелей (вместе со своими классами слушателей) внутри одного и того же файла, вместо создания нескольких файлов. Извините, я новичок в Java и тот факт, что все должно быть помещено внутри класса, немного запутанно для меня.Несколько определений JPanels внутри одного и того же файла

+0

Да, вы можете использовать внутренние классы, см [внутренний класс Пример] (HTTPS://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html) для получения дополнительной информации – MadProgrammer

ответ

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 для более подробной информации

Смежные вопросы