O esquema é o seguinte, estou criando um programa para mostrar/avaliar estatísticas de um banco de dados de Poker, e estou com alguns problemas na criação da GUI.
A idéia é basicamente escrever uma tabela com os dados, e certos dados codificados por cor para melhor visualização, e esses serão atualizados toda vez que uma classe interna como ‘updateGui()’ seja chamada externamente.
Achei que o método mais prático seria criar um JFrame para a janela, e inserir uma array de JLabels dentro dela. Porém, ainda mesmo antes de experimentar com os JLabels, decidi desenhar as linhas e colunas separadoras, porém não consigo que o repaint() funcione direito. As linhas aparecem corretamente quando eu coloco para serem desenhadas dentro do paint(), porém, em um caso onde eu preciso adicionar / remover linhas, eu gostaria de criar uma nova função apenas para desenhar essas linhas, porém o repaint() não pinta nada. Aparentemente é um problema comum, mas pesquisei na net e encontrei diversas respostas diferentes, e só complicou as coisas mais ainda… Segue o código como exemplo.
A classe Display é a classe parent, que vai chamar todas as funções internas da TableWindow.
public class Display {
public static void main(String args[]) {
TableWindow tableWindow = new TableWindow();
tableWindow.displayLines(9);
}
public class TableWindow extends JFrame {
private final Color bgColor = new Color(236, 233, 216);
TableWindow() {
super("Teste");
setBounds(0, 608, 1680, 412);
setBackground(bgColor);
getContentPane().setBackground(bgColor);
setLayout(null);
getContentPane().setLayout(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
}
public void paint(Graphics g) {
//g.setColor(Color.BLACK);
//g.drawRect(40, 50, 60, 60);
}
void displayLines(int players) {
Graphics g = this.getGraphics();
g.setColor(Color.BLACK);
for(int i = 0; i < players; i++) {
g.drawLine(20, 50 + 20 * i, 600, 50 + 20 * i);
}
repaint();
}
}