目前,我正试图将组件中的字符串绘制到框架中,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);现在,我的组件的构造函数中的边框确实出现了,并且就在我想要的位置,但是我想要绘制的字符串在任何地方都看不到。我是错过了什么,还是做错了什么?
谢谢,
发布于 2013-12-09 03:47:27
您没有覆盖PanelEstado类的PanelEstado方法,因此大小为零,因此不会绘制组件。
你为什么要用面板来做这个。JLabel和使用setText(.)有什么问题?方法。那么您就不需要担心设置首选的大小了。
https://stackoverflow.com/questions/20462750
复制相似问题