Референтни координати на JPanel в JFrame

Здравейте, имам проблем с реферирането на произхода на JPanel в моя JFrame. Моят JPanel беше настроен така, че в конструктора искам да добавя линия, която е в левия край на моя JPanel.

table = new JPanel();                    
table.setBackground(Color.green);                   
table.setBounds(10,10, 600, 600);
table.setSize(width.getValue(), height.getValue());
add(table);                                     

След това методът на боядисване...

public void paint(Graphics g){
    super.paint(g);
    Graphics2D g2d = (Graphics2D)g;
    g2d.drawLine(table.getX(), table.getY(), table.getX(), (table.getY() + table.getHeight()));
    g2d.drawLine(100, 100, (int)Math.round(cueBall.getPositionX()), (int)Math.round(cueBall.getPositionY()));   
}

Последната команда в метода за рисуване не е свързана с моя проблем... Кодът изглежда получава произхода като (10, 10), но го прилага към JFrame като цяло, а не към contentPane. Не разбирам напълно contentPane, но си помислих, че add() добавя към панела със съдържание и оттогава нататък вие препращате към координати само от contentPane... Просто не виждам защо setBounds() добави JPanel, където аз исках го, което беше (10,10) по отношение само на contentPane, но когато рисувам() изглежда, че получавам координатите по отношение на contentPane, но рисувам тези координати по отношение на JFrame. Осъзнавам, че мога просто да добавя стойност, за да преместя реда надолу, но подозирам, че това е лошо решение.

Трябва ли да добавя contentPane с негов собствен метод paint() или нещо подобно?


person Yoshi    schedule 18.04.2012    source източник


Отговори (1)


Трябва да отмените и да рисувате в JPanel.paintComponent(). Плащане Роядисване в AWT и Swing.

Не съм сигурен каква е причината за използването на setbounds(), опитвате ли се да използвате абсолютно позициониране на вашите компоненти? Бих препоръчал да се запознаете с оформленията на Java, ето едно добро начало - Визуално ръководство за мениджъри на оформление.

person tenorsax    schedule 18.04.2012
comment
Добре, има смисъл... и да, затова използвах зададени граници.. Имах проблеми с оформленията и не исках да се затъвам в тях още, защото е за училищен проект, но смятам да ги разбера след като го накарам да функционира - person Yoshi; 19.04.2012
comment
Планирам да ги разбера, след като го накарам да функционира Вашите GUI няма да работят, докато не го направите. - person Andrew Thompson; 19.04.2012
comment
@AndrewThompson Открих това по трудния начин снощи :) изглежда, че ще науча мениджърите на оформлението по-рано, отколкото планирах - person Yoshi; 19.04.2012