2013-08-12 2 views
0
class Gui { 

    protected JFrame j = new JFrame("My First window"); 
    protected JPanel p = new JPanel(); 
    protected Container c; 
    private GridBagConstraints g = new GridBagConstraints(); 

    public Gui() { 
     j.setSize(350, 250); 
     p.setSize(j.getSize()); 
     this.c = j.getContentPane(); 
    } 

    public void createMyGui() { 
     p.setLayout(new GridBagLayout()); 
     c.add(p); 
     setButtons(); 
     setGuiBackground(); 
     j.setVisible(true); 
     p.setVisible(true); 

    } 

    private void setGuiBackground() { 
     p.setBackground(Color.black); 
    } 

    private void setButtons() {  
    } 

    private void setLabels() { 
     g.fill = GridBagConstraints.HORIZONTAL; 
     g.ipady = 40; 
     g.weightx = 5.0; 
     g.insets = new Insets(0,0,0,0); 
     g.gridwidth = 3; 
     g.gridx = 0; 
     g.gridy = 1;  
     JLabel l1 = new JLabel("<html>Text color: <font color='red'>Red!</font>"); 
     p.add(l1, g);   
    } 
} 

В принципе, gui просто открывает окно с черным фоном, как я и хотел, но он не отображает текст. Я занимался вопросом SO, для настройки текста в графическом интерфейсе, и он говорит, что для написания текста используется JLabel и HTML.JPanel не добавляет текст JLabel?

Что не так с этим? Почему текст не появится?

+2

Где вам называть 'setLabels'? –

+0

Не связано, но нет необходимости вызывать 'setVisible (...)' для каждого компонента, просто добавьте их в контейнер, вызовите 'pack()' и установите для свойства visible этого контейнера значение true '. Кроме того, нет необходимости вызывать методы 'setXxXSize()' явно для большинства макетов, пусть это касается диспетчера компоновки, это связано с этой задачей. –

ответ

2

Вы не позвонили setLabels();. Вы, возможно, придется изменить следующий метод в:

public void createMyGui() { 
    p.setLayout(new GridBagLayout()); 
    c.add(p); 
    setButtons(); 
    setGuiBackground(); 
    setLabels(); 
    j.setVisible(true); 
    p.setVisible(true); 
} 
1

Это работает, я избавилась от контейнера и вызвать setLabels()

класса Гуй {

protected JFrame j = new JFrame("My First window"); 
protected JPanel p = new JPanel(); 
private GridBagConstraints g = new GridBagConstraints(); 

public Gui() { 
    j.setSize(350, 250); 
    p.setSize(j.getSize()); 
    j.setContentPane(p); 
    createMyGui(); 
    j.setVisible(true); 
    p.setVisible(true); 
} 

public void createMyGui() { 
    p.setLayout(new GridBagLayout()); 
    setButtons(); 
    setLabels(); 
    setGuiBackground(); 
} 

private void setGuiBackground() { 
    p.setBackground(Color.WHITE); 
} 

private void setButtons() {  
} 

private void setLabels() { 
    g.fill = GridBagConstraints.HORIZONTAL; 
    g.ipady = 40; 
    g.weightx = 5.0; 
    g.insets = new Insets(0,0,0,0); 
    g.gridx = 0; 
    g.gridy = 1;  
    JLabel l1 = new JLabel("<html>Text color: <font color=red>Red!</font></html>"); 
    p.add(l1, g);   
} 

public static void main(String[] args){ 
    standard s = new standard(); 
} 

}