Avatar billede funkyloonie Nybegynder
20. maj 2002 - 11:25 Der er 9 kommentarer og
1 løsning

Gøre en JTable uneditable ???

Jeg har en JTable hvor jeg ikke ønsker at brugeren skal ændrere i dataene. Jeg kan ikke finde ud af hvordan man sætter den til ikke at editable...
Nogen forslag?
Avatar billede soreno Praktikant
20. maj 2002 - 11:32 #1
minTable.setEnabled(false);
Avatar billede funkyloonie Nybegynder
20. maj 2002 - 11:35 #2
det virker ikke...
Avatar billede soreno Praktikant
20. maj 2002 - 11:56 #3
følgende virker fint her:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TestAfJTable extends JFrame implements WindowListener, KeyListener
{

    private int frameWidth = 640;
    private int frameHeight = 480;
    private JTable table;
   
    private Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)},
                                {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
                                {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)},
                                {"Mark", "Andrews", "Speed reading", new Integer(20), new Boolean(true)},
                                {"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false)} };

    private String[] columnNames = {"First Name",
                                    "Last Name",
                                    "Sport",
                                    "# of Years",
                                    "Vegetarian" };
                                   
    public TestAfJTable()
    {
        createFrame();
    }

    private void createFrame()
    {
        setTitle("TestAfJTable");
        setResizable(false);
        addKeyListener(this);
        addWindowListener(this);   

        //Place components here:
        table = new JTable(data, columnNames);
        table.setEnabled(false);
        this.getContentPane().add(table);

        //Center Frame
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setSize(new java.awt.Dimension(frameWidth, frameHeight));
        setLocation( (screenSize.width-this.getWidth()) / 2, (screenSize.height - this.getHeight()) / 2);
    }

    public void windowOpened(WindowEvent e){}
    public void windowClosing(WindowEvent e){ endProgram();}
    public void windowClosed(WindowEvent e){}
    public void windowIconified(WindowEvent e){}
    public void windowDeiconified(WindowEvent e){}
    public void windowActivated(WindowEvent e){}
    public void windowDeactivated(WindowEvent e){}

    public void keyReleased(KeyEvent e){}
    public void keyTyped(KeyEvent e){}
    public void keyPressed(KeyEvent e)
    {
        if(e.getKeyCode()==27)
            endProgram();
    }

    public void endProgram()
    {
        dispose();
        System.exit(0);
    }
}

class Main
{
    public static void main(String args[])
    {
          new TestAfJTable().show();
    }
}
Avatar billede funkyloonie Nybegynder
20. maj 2002 - 12:09 #4
dit virker men mit virker ikke og jeg gør det samme... Jeg har tabellen inde i et tabbedPane. Kan det gøre nogen forskel?
Avatar billede soreno Praktikant
20. maj 2002 - 12:13 #5
prøv at poste lidt kode.
Avatar billede funkyloonie Nybegynder
20. maj 2002 - 12:17 #6
//Min metode til at oprette tabellen med
private void opretJTableVaerelser() {
    VaerelseModel vaerelseModel = new VaerelseModel(tabelMetaData, tabelData, RmiVaerelse);

    oversigtsTabel[0] = new JTable(vaerelseModel);

//Her opretter jeg fanebladene
private void opretFaneblad() {
    faneblad = new JTabbedPane();

    tabPanel = new JPanel[bladnavn.length];
    oversigtsTabel = new JTable[antalJTable];
    this.opretJTableVaerelser();

    for(int i = 0; i < bladnavn.length; i++) {
      tabPanel[i] = new JPanel(new BorderLayout());
    }

    tabPanel[0].add(scrollPane, BorderLayout.CENTER);

    for(int i = 0; i < tabPanel.length; i++) {
      faneblad.addTab(bladnavn[i], tabPanel[i]);
    }
    faneblad.setSelectedIndex(0);

    container.add(faneblad, borderlayouts[4]);
  }
    oversigtsTabel[0].setEnabled(false);
    scrollPane = new JScrollPane(oversigtsTabel[0]);

  }

Jeg ved ikke om der er nok kode. Jeg har en del i den JFrame.
Avatar billede funkyloonie Nybegynder
20. maj 2002 - 12:18 #7
oversigtsTabel[0].setEnabled(false); gør ikke som ønsket...
Avatar billede soreno Praktikant
20. maj 2002 - 12:20 #8
og et eller andet sted laver du en:
oversigtsTabel[0].setEnabled(false);
?
Avatar billede soreno Praktikant
20. maj 2002 - 12:21 #9
hmmm, mystisk
Avatar billede funkyloonie Nybegynder
20. maj 2002 - 14:45 #10
du får points. det var jo et rigtigt svar selvom jeg ikke har fået det til at virke i mit eksempel.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester