2013-10-13 1 views
2

Привет, у меня в основном есть два класса: один основной и один, чтобы отделить панели, просто для чтения кода.Java Swing: компоненты панели доступа из другого класса

я есть:

public class Main{ 

    public static void main (String args[]) { 
    JFrame mainJFrame; 
    mainJFrame = new JFrame(); 

    //some other code here 

    CenterPanel centerPanel = new CenterPanel(); 
    centerPanel.renderPanel(); 
    mainFrame.add(centerPanel.getGUI()); 

    } 


} 

class CenterPanel{ 
    JPanel center = new JPanel(); 

    public void renderPanel(){ 
     JButton enterButton = new JButton("enter"); 
     JButton exitButton = new JButton("exit"); 
     center.add(exitButton); 
     center.add(enterButton); 
    } 

    public JComponent getGUI(){ 
     return center; 
    } 
} 

Над кодом отлично работает. Он отображает centerPanel, который содержит кнопки ввода и выхода. Мой вопрос:

Мне до сих пор нужно манипулировать кнопками в основном, как изменить цвет, добавить прослушиватель действий и т.п. Но у i больше не доступ к нимmain потому что технически они из другого класса, а потому в центре, centerPanel - еще один объект.

Как получить доступ к кнопкам и использовать их (наборы, инициаторы действий и т. Д.)? даже если они пришли из другого класса, и я все еще хочу использовать его в главном? Большое спасибо!

ответ

3

Сделайте кнопки член CenterPanel

class CenterPanel{ 
    JPanel center = new JPanel(); 

    JButton enterButton; 
    JButton exitButton; 

    public void renderPanel(){ 
     enterButton = new JButton("enter"); 
     exitButton = new JButton("exit"); 
     center.add(exitButton); 
     center.add(enterButton); 
    } 

    public JButton getEnterButton() 
    { 
     return enterButton; 
    } 

    public JButton getExitButton() 
    { 
     return exitButton; 
    } 

    public JComponent getGUI(){ 
     return center; 
    } 
} 
+0

О, да, спасибо, я думал о совершенно другой вещи. – muffin

1

У вас есть ссылка на centerPanel в вашем основном методе. После вызова centerPanel.renderPanel(); кнопки будут добавлены в ссылку «center» типа JPanel в экземпляре CenterPanel. Вы можете получить ссылку «center», вызвав centerPanel.getGUI(); в основном методе. Это вернет ссылку center типа JComponent. JComponent - это awt container.so, вы можете позвонить center.getComponents(). Это вернет все компоненты в массиве, присутствующем в JPanel. т.е. центральной ссылки. Вы можете повторять их, получать свой тип и делать все, что хотите.

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

  • Нет связанных вопросов^_^