2014-01-26 2 views
1

Так у меня есть два класса:JTextArea & JPanel разные классы одно окно ... возможно?

public class TimeServer extends JPanel implements TimeVariables 
{ 

public TimeServer() 
{ 

    JTextArea serverLog = new JTextArea(); 
    // Create a scroll pane to hold text area 
    JScrollPane scrollPane = new JScrollPane(serverLog); 

    JPanel serverWin = new JPanel(); 

    serverWin.add(scrollPane); 

} 

и другой класс, который имеет:

private JPanel mainWin = new JPanel(); 
private JPanel gridArea = new JPanel(); //hold cells 

TimeServer serverWin = new TimeServer(); 

public class TimClient extends JFrame implements Runnable, TimeVariables 
{ 
    his.add(mainWin, BorderLayout.CENTER); 
    mainWin.setLayout(new BorderLayout()); 
    // mainWin.setLayout(new GridLayout(1,2)); 

    //Create Grid 
    gridArea.setLayout(new GridLayout(10, 10, 2, 2)); 

    for (int i = 0; i < 10; i++) 
     for (int j = 0; j < 10; j++) 
      gridArea.add(cell[i][j] = new Cell(i, j, this)); 

    gridArea.setBorder(new LineBorder(Color.black, 1)); 

    jlblTitle.setHorizontalAlignment(JLabel.CENTER); 
    jlblTitle.setFont(new Font("SansSerif", Font.BOLD, 16)); 
    jlblTitle.setBorder(new LineBorder(Color.black, 1)); 
    jlblStatus.setBorder(new LineBorder(Color.black, 1)); 

    mainWin.add(gridArea, BorderLayout.CENTER); 
    mainWin.add(serverWin, BorderLayout.PAGE_END); 
    // Place the panel and the labels to the frame 

    setLayout(new BorderLayout()); // implicit anyway 

    add(jlblTitle, BorderLayout.NORTH); 
    add(mainWin, BorderLayout.CENTER); 
    add(jlblStatus, BorderLayout.SOUTH); 
} 

public static void main(String[] args) { 

    // Create a frame 
    TimClient frame = new TimClient("Time Client"); 
    //frame.getContentPane().add(BorderLayout) 

    // Display the frame 
    frame.setSize(620, 600); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

} 

все, что я хочу сделать, это сохранить журнал сервера и сетку в JPanel рядом друг с другом, может вы объясните, как?

также Как добавить JPanel в класс сервера к одному в клиенте?

Вот набросок того, как я хотел бы, чтобы она выглядела: sketch

+0

Удаление содержимого вопроса не поможет никому другому в будущем ... – MadProgrammer

ответ

1

Ваших проблемы выше появляются проистекают из плохих Качелей коды практики, которая, кажется, армированных генераторами Качели коды (хотя я не уверен, что если вы используете этот инструмент) и официальный Swing, учебники, и это:

  • Прежде всего, вы должны избегать свинга классов GUI расширить JFrame как излишне краски кода GUI в угол, который требует немного усилий, чтобы выбраться из.
  • Вместо этого передайте свой код GUI Swing для создания JPanels, панелей, которые теперь могут быть легко помещены в другие JPanels или в JFrames, JDialogs, JOptionPanes, заменены на CardLayouts, ... там, где они нужны.
  • Вместо этого создайте, заполните и упакуйте свои JFrames, когда они понадобятся.

Так что я предлагаю вам сделать это:

  • изменить код выше, так что классы не распространяются JFrames, и вместо того, чтобы создать JPanels,
  • Создание мастер JPanel, который использует BorderLayout
  • Добавить сетку к вышесказанному, BorderLayout.CENTER
  • Добавить свой JTextArea содержащих JScrollPane и его JPanel в мастер JPanel в позиции BorderLayout.PAGE_END.
  • Создайте свой JFrame, чтобы удерживать и отображать мастер JPanel.

Если вы хорошо отделили свой графический интерфейс от вашего логического кода, тогда вам будет легко перезаписать код GUI, сохранив при этом свой код логики (или «модели»).


Edit 2
Что касается вашего вопроса измененном где сейчас первый класс расширяет JPanel, просто добавить, что JPanel к вашему JFrame в конце BorderLayout.LINE_END (также известный как BorderLayout.EAST) положение.

+1

Я планировал изменить класс сервера от расширения до jframe в jpanel. Я не использую генераторы качающихся генераторов ... как я сказал, что noob при программировании справляется с этим с минимальной помощью :(кроме людей здесь :) спасибо за вашу помощь :) – YouSof

+1

@YouSof: Относительно «не используя Генераторы Swing-кода "- хорошо для вас!Я все использую их после изучения Swing, но вы делаете это правильно, чтобы избежать их на этом этапе. –

+0

мой план - изменить класс сервера на jpanel, а затем сохранить класс клиента как расширяющий JFrame. но как бы добавить jpanel в сервер к кадру на клиенте? LOL надеюсь, что имеет смысл – YouSof

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