2013-04-02 3 views
2

Я пытался создать JLabel, размер которого относительно размера окна, но по какой-то причине этот JLabel не появляется на экране.Относительная калибровка не работает

Это код, который используется в моем классе MainGUI, который имеет базовый интерфейс:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class MainGUI extends JFrame{ 

    JPanel core; 
    GridBagConstraints c; 

    JLabel[] sts; 

    public MainGUI(){ 

     core = new JPanel(new GridBagLayout()); 
     getContentPane().add(core, BorderLayout.CENTER); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(500, 500); 


     sts = new JLabel[10]; 

     int width = (int)(66/100) * getWidth(), height = (int)(75/100) * getHeight();  //problem: due to these sizes the JLabel is not appearing 

     for(int i = 0; i < sts.length; i++){ 
      sts[i] = new JLabel("test"); 
      sts[i].setOpaque(true); 
      sts[i].setBackground(Color.BLACK); 
      sts[i].setForeground(Color.BLACK); 
      sts[i].setPreferredSize(new Dimension(width,height)); //size being set 
     } 


     c = new GridBagConstraints(); 

     c.gridx = 0; 
     c.gridy = 0; 

     core.add(sts[1], c); 

    } 

} 

Любая помощь в поиске решения для этого было бы весьма признателен, спасибо заранее.

+0

Вы пробовали настройки текстового значения для метки, так что он имеет что показать? – Ash

+0

Да, да, но я все еще, ничего. –

ответ

2

Мало issues-

  1. переднего плана и цвет фона одинаковы для этикетки
  2. Вам нужно установить какой-нибудь текст на этикетке
  3. Проверьте, если предпочтительнее размер правильно рассчитал, как метка отображается, если эта строка закомментирована. Вычисленная высота и ширина равны нулю.

Это всегда будет возвращать ноль как результат деления int-

int width = (int)(66/100) * getWidth(); 

Сделать it-

int width = (int)(((float)66/100) * getWidth()); 
+0

Спасибо! Работал :) –

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