我試圖接受,panel.getSize()但它說java.awt.Dimension[width=0,height=0]
我試過panel.getHeight()但它說它是0
uj5u.com熱心網友回復:
您獲得 0x0 作為維度的原因是:
您確實宣告要在 JFrame 和 JPanel 之前找到要呈現的大小
我假設你這樣做了:
JPanel panel = new JPanel();
System.out.println(panel.getSize()); // <-- This Line Triggers Earlier
panel.setVisible(true); // <-- Then This Line Renders the Panel, but late to recognize
要解決此問題,請確保在獲取大小資訊之前先渲染所有物件:
JPanel panel = new JPanel();
panel.setVisible(true); // <-- Then This Line Renders the Panel first before recognizing
System.out.println(panel.getSize()); // <-- This Line Triggers Output Size
獎勵(為了通過使用您選擇的偵聽器無限獲取資訊,我的實體是 MouseListener):
import java.awt.Event.*;
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
System.out.println("Size: " panel.getSize());
panel.repaint(); //This refreshes when user tries to resize
}
});
樣品:
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.*;
class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello world");
frame.setSize(300, 300);
frame.setLocation(5, 5);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//JPanel Created
JPanel panel = new JPanel();
//You are getting 0x0 because you did first
//System.out.println("Size: " panel.getSize());
panel.setVisible(true);
frame.add(panel);
frame.setVisible(true);
//Solution: Get Value by event of your choice
//My instance is to use mouseListener mousePressed
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
System.out.println("Size: " panel.getSize());
panel.repaint();
}
});
}
}
有幫助的話給個大拇指。格拉奇
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/482331.html
