10. april 2006 - 11:24Der er
3 kommentarer og 1 løsning
Grafisk repræsentation af tabel
Hej,
Hvis jeg har et int array[][] og vil repræsentere det grafisk hvordan skal dette gøre uden at køre utrolig langsomt? F.eks en 100x100 tabel som skal være rød hvis tallet er 0 og være blå hvis tallet er 1.
Jeg kan sagtens få det til at virke ved at lade et gridlayout med JLabels, men det tager alt for langt tid. Jeg tror jeg er ude noget rod som der findes en meget bedre løsning til.
Grunden til at det ikke må tage alt for langt tid at felter skal dynamisk opdateres ofte.
Du kunne lave lave et billede hvorpå du tegnede hver felt.
I din applikation ville du så i en tegne metode lave noget ala
for(x;arraylenght;x++) { for(y;array.lenght;y++) { if(array[x][y] == 0) { g.setColor(Color.RED); g.fillRect(?*x,?*y,?,?); } else { g.setColor(Color.BLUE); g.fillRect(....); } } //hvor g tegner på dit billede og slutteligt tegner du dit image i draw(Graphics g) metoden.
På den måde burde der ikke være noget problem med ofte opdateringer.
public class DynamicTable extends javax.swing.JFrame {
public DynamicTable() { initComponents(); rows.setText("100"); columns.setText("100"); vis.doClick(); }
private void initComponents() { center = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); table = new javax.swing.JTable(); top = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); rows = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); columns = new javax.swing.JTextField(); vis = new javax.swing.JButton();
class MyRenderer extends JLabel implements TableCellRenderer{ public MyRenderer(){ setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.