2012-04-11 4 views
-1

Я новичок в Java, я хотел бы знать, как я могу получить свою текстовую область из основного класса?Получите текстовое поле в java, используя JFrame

Это мой код:

public static void main(String[] args) { 
    UIManager.put("swing.boldMetal", Boolean.FALSE); 

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

     } 
    }); 
} 



private static void createAndShowGUI() { 
    frame = new JFrame("Frame"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    GuiManager animator = new GuiManager(); 

    frame.add(animator, BorderLayout.CENTER); 

    // Display the window. 
    frame.pack(); 
    frame.setSize(800, 500); 
    frame.setVisible(true); 
} 

и GuiManager:

public GuiManager() { 
    setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 

     // ............. 

    // Create Scrolling Text Area in Swing 
    JPanel panelLabel = new JPanel(); 
    panelLabel.setLayout(new FlowLayout());  // No content pane for JPanel. 
    JPanel panel = new JPanel(); 
    panel.setLayout(new FlowLayout());  // No content pane for JPanel. 


    JLabel ta1Label = new JLabel("Label One", JLabel.LEFT); 
    ta1Label.setAlignmentX(Component.LEFT_ALIGNMENT); 

    JTextArea ta = new JTextArea("", 10, 30); 
    ta.setLineWrap(true); 
    JScrollPane sbrText = new JScrollPane(ta); 
    sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

    JLabel ta2Label = new JLabel("Label2", JLabel.RIGHT); 
    ta2Label.setAlignmentX(Component.RIGHT_ALIGNMENT); 

    JTextArea ta2 = new JTextArea("", 10, 30); 
    ta2.setLineWrap(true); 
    JScrollPane sbrText2 = new JScrollPane(ta2); 
    sbrText2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

    panelLabel.add(ta1Label); 
    panelLabel.add(ta2Label); 
    panel.add(sbrText); 
    panel.add(sbrText2); 



    // Put everything together. 
    add(panelLabel); 
    add(panel); 
    setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

} 

Моя цель состоит в том, чтобы перенаправить вывод в это текстовое поле, а для некоторого вывода мне нужно перенаправить на текстовое поле на слева, но иногда мне нужно выводить на текстовое поле справа. Что было бы лучшим решением для этого? Спасибо.

+0

Ваш вопрос не является ни четким, ни кратким – ControlAltDel

ответ

1

Все, что вы хотите получить, похоже, находится в GuiManager. Однако вы помещаете декларацию для него в метод. Это означает, что он становится локальной переменной. Как только метод будет закончен с его кодом, переменная исчезнет и больше не будет доступна.

Исправить? Просто сделайте его доступным для всех других классов.

public static GuiManager animator = new GuiManager(); 

Put что там, где вы объявили все другие переменные для этого класса, и принять тот, который находился в методе «createAndShowGUI()».

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