2015-03-18 5 views
-1

Я знаю, что размер пикселя JFrame включает строку заголовка и стороны, поэтому я хочу создать панель вместо этого и использовать метод pack() для установки на панель внутри JFrame. Проблема в том, что всякий раз, когда я запускаю код, окно почему-то появляется в размере 0, несмотря на то, что JPanel является другим размером. Вот мой код.Настройка размера пикселя JPanel, а затем его установка внутри JFrame

/*This part of the code is from one class.*/ 
    public static void main(String[] args) throws InterruptedException { 

    P.g.setSize(300, 300); 
    frame.getContentPane().add(P.g); 

    frame.setLocationRelativeTo(null); 
    frame.setBackground(Color.WHITE); 
    frame.pack(); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

} 


/*This part of the code is from another class.*/ 
public class P extends JPanel { 

static P g = new P(); 

public void paintComponent(Graphics g) { 

    super.paintComponent(g); 

    g.drawLine(100, 0, 100, 300); 
    g.drawLine(200, 0, 200, 300); 
    g.drawLine(300, 0, 300, 300); 

} 

} 

ответ

0

Это, потому что эффективный размер вашего JPanel равен 0,0. Переопределите getPreferredSize() в P, чтобы вернуть требуемый размер, и пакет должен привести к правильному результату (в зависимости от вашего менеджера макета).

/*This part of the code is from another class.*/ 
public class P extends JPanel { 
    static P g = new P(); 

    @Override 
    public Dimension getPreferredSize(){ 
     return new Dimension(requiredWidth , requiredHeight); 
    } 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 

     g.drawLine(100, 0, 100, 300); 
     g.drawLine(200, 0, 200, 300); 
     g.drawLine(300, 0, 300, 300); 
    } 

} `

+0

Можете ли вы показать мне, где именно поставить метод GetPreferredSize()? Пожалуйста? – Ski

+0

Я отредактировал сообщение. getPreferredSize теперь реализуется отдельно от значений – Paul

+0

Большое вам спасибо! Таким образом, метод переопределения встроен и в основном задает размер панели справа? Поскольку мы не можем установить размер панели, когда мы ее расширяем? – Ski

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