目前我正试图将一个组件的字符串绘制成一个框架,SSCCE将是这样的:
// The component class through which I draw the string!
package gui;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
public class PanelEstado extends JPanel{
private String valores = "";
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLACK);
g.drawString(valores, 400, 45);
}
public void setValores(int arca, int puntosBelleza, int cantidadHabitantes, int cantidadHabitantesDisponibles){
String valores = "Arca: " + arca
+ " "
+ " Puntos de Belleza: " + puntosBelleza +
" " +
" Habitantes: " +
cantidadHabitantes + " / "
+ cantidadHabitantesDisponibles;
}
public PanelEstado(){
setBorder(new LineBorder(Color.RED));
}
}
// The Main GUI Class!
public GUIJuego(){
JPanel panelConstruccion = new JPanel(new GridLayout(9,1));
JPanel panelDatosCiudad = new JPanel(new GridLayout(1,2));
JPanel panelMapa = new JPanel(new GridLayout(25,25));
PanelEstado panEst = new PanelEstado();
add(panelConstruccion, BorderLayout.WEST);
add(panelDatosCiudad, BorderLayout.NORTH);
panelDatosCiudad.add(labelConstrucciones);
panEst.setValores(administrador.getCiudad().getArca(), administrador.getCiudad().getPuntosBelleza(), administrador.getCiudad().getCantidadHabitantes(), administrador.getCiudad().getCantidadHabitantesDisponibles());
panelDatosCiudad.add(panEst);
add(panelMapa, BorderLayout.CENTER);
}
让我稍微缩小搜索范围。其中最重要的部分是SSCCE中的第一个类,并且:
panEst.setValores(administrador.getCiudad().getArca(), administrador.getCiudad().getPuntosBelleza(), administrador.getCiudad().getCantidadHabitantes(), administrador.getCiudad().getCantidadHabitantesDisponibles());
panelDatosCiudad.add(panEst);
现在,正如它所说的那样,我的Component的构造函数中的边框确实显示出来并且正好在我想要它的位置,但是我想要绘制的String无处可见。我错过了什么,或做错了什么?
谢谢,
答案 0 :(得分:2)
您没有覆盖PanelEstado类的getPreferredSize()
方法,因此大小为零,因此组件永远不会被绘制。
为什么你甚至使用面板呢? JLabel和使用setText(...)方法有什么问题。然后您无需担心设置首选大小。