Form.java расширяет JFrame - PullRequest
       14

Form.java расширяет JFrame

1 голос
/ 15 января 2010

Я начинающий в Java. Я хотел бы создать класс Form, который расширяет JFrame для использования. Все работает хорошо, размеры и размеры хорошо отображаются на экране. Я просто не могу добавить компоненты к нему. Чего мне не хватает Погуглил каждый класс, ничего не смог найти.

Main.java:

package pongLib;

import pongUI.*;

public class Main {

    public static void main(String[] args) {
 Form frm = new Form(600,500,"Pong");
    }

}

Form.java:

package pongUI;

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

public class Form extends JFrame {
    private int width;
    private int height;
    private int posx;
    private int posy;
    private String title;

    public Form(int width, int height, String title) {
 //call parent constructor
 super();

 //set size
 this.width=width;
 this.height=height;

 //set title
 this.title=title;

 //get position(x,y)
 Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
 Double x = (screen.getWidth()-this.width)/2;
 Double y = (screen.getHeight()-this.height)/2;
 posx = x.intValue();
 posy = y.intValue();

 //add components
 JLabel points1Label = new JLabel("The Rookie (aka You)");
 this.addComponent(points1Label, 10, 50);

 //set form properties
 this.setLayout(null);
 this.setSize(width, height);
 this.setLocation(posx, posy);
 this.setResizable(false);
 this.setTitle(title);
 this.setVisible(true);

    public void addComponent(Component c, int posx, int posy) {
 c.setLocation(posx, posy);
 this.getContentPane().add(c,BorderLayout.CENTER);
    }
}

Ответы [ 6 ]

2 голосов
/ 15 января 2010

Я думаю, что проблема ваша

setLayout(null);

нет менеджера по расположению для размещения компонентов.

2 голосов
/ 15 января 2010

Вы не используете LayoutManager:

this.setLayout(null);

См. эту статью об абсолютном позиционировании на свинге, когда не используется менеджер макетов.

1 голос
/ 15 января 2010

Вот оно:

package test;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Form extends JFrame {
    private final int width;
    private final int height;
    private final int posx;
    private final int posy;
    private final String title;

    public Form(int width, int height, String title) {
        // call parent constructor
        super();

        // set size
        this.width = width;
        this.height = height;

        // set title
        this.title = title;

        // get position(x,y)
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        Double x = (screen.getWidth() - this.width) / 2;
        Double y = (screen.getHeight() - this.height) / 2;
        posx = x.intValue();
        posy = y.intValue();

        // add components
        JLabel points1Label = new JLabel("The Rookie (aka You)");
        points1Label.setBounds(10, 50, points1Label.getPreferredSize().width,
            points1Label.getPreferredSize().height);
        this.getContentPane().add(points1Label);

        // set form properties
        this.setLayout(null);
        this.setSize(width, height);
        this.setLocation(posx, posy);
        this.setResizable(false);
        this.setTitle(title);
        this.setVisible(true);
    }

    public void addComponent(Component c, int posx, int posy) {
        c.setLocation(posx, posy);
        this.getContentPane().add(c, BorderLayout.CENTER);
    }
}
1 голос
/ 15 января 2010

Ваши компоненты не имеют размера для них. Дайте им ширину и высоту, или, что еще лучше, используйте менеджер макетов вместо нулевого макета.

1 голос
/ 15 января 2010

Вы должны установить макет на new BorderLayout() вместо null. В противном случае ваши компоненты не будут иметь размер> 0 и поэтому не будут видны.

1 голос
/ 15 января 2010

Вы должны установить макет.

this.setLayout (new BorderLayout ());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...