2017-02-18 18 views
1

Я отправляю свой класс, который расширяет JPanel через ObjectOutputStream для клиента, так что их графический интерфейс будет «загружаться».Правильный способ сериализации JPanel?

public class ClickOptionPanel extends JPanel implements Serializable { 

private Font font = new Font("Arial", Font.BOLD, 13); 

private JLabel clickerTitle; 

private JSlider clickerMaxSlider, clickerMinSlider; 

private JTextField clickerMinField, clickerMaxField; 

private JCheckBox clickInsideMinecraft, autoBlock; 

public ClickOptionPanel() { 
    setLayout(new BorderLayout()); 
    add(getClickerTitlePanel(), BorderLayout.NORTH); 
    add(getClickerSliderPanel(), BorderLayout.CENTER); 
    add(getCheckBoxPanel(), BorderLayout.SOUTH); 
} 

private JPanel getClickerTitlePanel() { 
    JPanel panel = new JPanel(); 
    panel.setBorder(BorderFactory.createEtchedBorder()); 
    clickerTitle = new JLabel("Clicker Options"); 
    clickerTitle.setFont(font); 
    panel.add(clickerTitle); 
    return panel; 
} 

private JPanel getClickerSliderPanel() { 
    JPanel panel = new JPanel(); 
    panel.setLayout(new BorderLayout()); 
    clickerMaxSlider = new JSlider(0, 200, 125); 
    clickerMaxSlider.setPreferredSize(new Dimension(300, 45)); 
    clickerMinSlider = new JSlider(0, 200, 75); 
    clickerMinSlider.setPreferredSize(new Dimension(300, 45)); 
    panel.add(clickerMaxSlider, BorderLayout.NORTH); 
    panel.add(clickerMinSlider, BorderLayout.CENTER); 
    panel.add(getClickFieldPanel(), BorderLayout.SOUTH); 
    return panel; 
} 

private JPanel getClickFieldPanel() { 
    JPanel panel = new JPanel(); 
    clickerMaxField = new JTextField(10); 
    clickerMaxField.setFont(font); 
    clickerMaxField.setHorizontalAlignment(SwingConstants.CENTER); 
    clickerMinField = new JTextField(10); 
    clickerMinField.setFont(font); 
    clickerMinField.setHorizontalAlignment(SwingConstants.CENTER); 
    panel.add(clickerMinField); 
    panel.add(clickerMaxField); 
    return panel; 
} 

private JPanel getCheckBoxPanel() { 
    JPanel panel = new JPanel(); 
    panel.setLayout(new BorderLayout()); 
    panel.setBorder(BorderFactory.createEtchedBorder()); 
    clickInsideMinecraft = new JCheckBox("Only click inside of Minecraft:              "); 
    clickInsideMinecraft.setHorizontalTextPosition(SwingConstants.LEFT); 
    autoBlock = new JCheckBox("Enable auto-block:              "); 
    autoBlock.setHorizontalTextPosition(SwingConstants.LEFT); 
    panel.add(clickInsideMinecraft, BorderLayout.NORTH); 
    panel.add(autoBlock, BorderLayout.SOUTH); 
    return panel; 
} 

Существует JPanel, который я отправляю. Я создаю новый экземпляр до его отправки.

JPanel становится пустым - почему это?

ответ

0

Я делал все правильно - это было именно так, что на стороне клиента я забыл установить объект ois.readObject на панель!

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

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