Вам необходимо понять основы менеджеров макетов, прежде чем вы сможете попробовать что-либо с Swing.
Изучение учебник здесь https://docs.oracle.com/javase/tutorial/uiswing/layout/howLayoutWorks.html
Если вы пытаетесь построить форму с различными элементами управления Качели, никогда не использовать абсолютные координаты для размещения их. Изменение размера окна должно динамически перемещать элементы управления в соответствии с типом макета, который вы хотите использовать. Если вы используете панель в качестве холста для рисования (что, как я думаю, вам нужно), посмотрите на мой пример ниже.
Попытайтесь сначала освоить пару фундаментальных макетов, таких как BorderLayout и GridLayout. После освоения вы можете использовать очень мало, чтобы достичь практически любого желаемого макета, вложив их вместе. Также изучите основы ScrollPane, чтобы эффективно использовать экранную недвижимость
Что касается вашего первоначального вопроса, я создал пример того, как работает BorderLayout и как рисовать в определенном регионе на панели. Я также добавил код, чтобы вы могли установить свой курсор по-разному в зависимости от того, находитесь ли вы в меньшей области внутри данной панели.
Попробуйте это:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class FrameDemo extends JFrame {
private static final long serialVersionUID = 1L;
public FrameDemo() {
super("Frame Demo");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().add(new CustomPanel(Color.RED), BorderLayout.NORTH);
getContentPane().add(new CustomPanel(Color.GREEN), BorderLayout.SOUTH);
getContentPane().add(new CustomPanel(Color.BLUE), BorderLayout.EAST);
getContentPane().add(new CustomPanel(Color.YELLOW), BorderLayout.WEST);
getContentPane().add(new JScrollPane(new CustomPanel(Color.BLACK)), BorderLayout.CENTER);
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new FrameDemo();
frame.setVisible(true);
}
});
}
}
class CustomPanel extends JPanel implements MouseMotionListener {
private static final long serialVersionUID = 1L;
private static final Dimension PANEL_SIZE = new Dimension(200, 100);
private static final int HAND_CURSOR_INDEX = 1;
private static final int DEFAULT_CURSOR_INDEX = 0;
private static final Cursor[] _cursors = new Cursor[] {
Cursor.getDefaultCursor(),
Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)
};
// I want to place a JPanel with 300,200 size at 100,50 location in a JFrame
private static final Rectangle _rectangle = new Rectangle(50, 10, 40, 50);
public CustomPanel(Color color) {
setBackground(color);
addMouseMotionListener(this);
}
public Dimension getPreferredSize() {
return PANEL_SIZE;
}
public Dimension getMinimumSize() {
return PANEL_SIZE;
}
public Dimension getMaximumSize() {
return PANEL_SIZE;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(
(int)_rectangle.getX(),
(int)_rectangle.getY(),
(int)_rectangle.getWidth(),
(int)_rectangle.getHeight());
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
int cursorIndex = _rectangle.contains(e.getPoint()) ?
HAND_CURSOR_INDEX :
DEFAULT_CURSOR_INDEX;
setCursor(_cursors[cursorIndex]);
}
}

Прочтите руководства по менеджерам макетов Swing, чтобы узнать, почему это происходит. Поймите, что JFrame (на самом деле его contentPane) использует BorderLayout по умолчанию. Также знайте, что большинство менеджеров макетов не уважают размер компонентов, а предпочитают их размеры. Также знайте, что если вы используете макет «null», вы нарисуете себя в углу; поэтому избегайте их. –
Что содержит панель, которая бы сделала размер '300 x 200'? Что содержит ферма, которая делает панель, отображаемую в '100, 50'? – trashgod
Я боюсь, что приведенные ответы не помогут понять, как работают макетные менеджеры. Они будут только путать его дальше. Нет такой вещи, как плохой студент, только плохой учитель – Constantin