У меня есть два класса, которые расширяют JPanel: MapPanel и CityPanel. Я пытаюсь нарисовать CityPanel в MapPanel, но ничего не появляется. Я не понимаю, почему, если я добавлю JButton таким же образом, он будет отображаться отлично. Вот код:Нарисуйте JPanel в JPanel
public class PanelMap extends JPanel {
public PanelMap() {
CityPanel city = new CityPanel();
city.setVisible(true);
this.add(city);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
}
public class CityPanel extends JPanel {
private BufferedImage image;
public CityPanel() {
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Test", 0, 0); }
}
EDIT:
У меня есть этот код в CityMap. Он отображает строку, но не изображение.
public CityPanel(String filePath, int red, int green, int blue) {
this.image = colorImage(filePath, red, green, blue);
this.setSize(100, 100);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 50, 50, null);
g.drawString("sdjkfpod", 50, 50);
}
'@Override защищенная пустота paintComponent (Графика g) { super.paintComponent (g); } 'Этот код совершенно бессмысленен. Все, чего он добивается, состоит в том, чтобы убедиться, что метод делает именно то, что он сделал бы, если бы не был переопределен метод. –
Поскольку 'CityPanel' не предлагает размер, а' PanelMap' имеет значение 'FlowLayout' по умолчанию, панель города будет 0x0 пикселей и не будет отображаться. Добавьте к нему красную «LineBorder», чтобы доказать это самому себе. В целом: для лучшей помощи скорее отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –
укажите размер вашей внутренней панели ... –