Avatar billede saxtus Nybegynder
11. marts 2004 - 10:30 Der er 4 kommentarer og
1 løsning

højrestilling af data i en JTabel

Jeg skal have højrestillet nogle resultater i en Jtabel, men kan ikke rigtigt finde ud af hvordan.

Her er hvad jeg har lavet ind til videre

package Kildekode.GUI;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.JTable.*;
import layout.TableLayout;
import Kildekode.Forretningsmodel.ServerInterface;

public class SælgVare extends JPanel{
  private static SælgVare instans;
  private JTextField Ttotal;
  private JLabel Ltotal, LordreNr;

  //tabel
  public JTable salgsTabel;
  final String[] hoved = {"VareNr", "Beskrivelse", "Location", "Antal", "Pris", "Subtotal"};
  private Object[][] data = {{"","","","","",""},{"","","","","",""}};
  private TableModel salgsTabelModel;
  //slut tabel

  // Singleton
  public static SælgVare hentInstans(){
    if (instans == null)
      instans = new SælgVare();
    return instans;
  }

  public SælgVare(){
    double m = 5;
    double f = TableLayout.FILL;

    double[][] size = {{0,  f, f,  f,  f, f},  //kol
                      {m, 27, f,  2, 20, m}}; //rækker

    LordreNr = new JLabel("");
    Ttotal = new JTextField("");
    Ttotal.setBackground(Color.getHSBColor(15,15,15));
    Ttotal.setHorizontalAlignment(JTextField.RIGHT);

    Ltotal = new JLabel("Total");
    Ltotal.setFont(new Font("Verdana", 1, 12));
    Ltotal.setForeground(Color.black);

    LordreNr = new JLabel();

    setLayout(new TableLayout(size));

    //tabel start
    salgsTabelModel = new AbstractTableModel()
    {
      public int getColumnCount()
      {
        return hoved.length;
      }
      public int getRowCount()
      {
        return data.length;
      }
      public Object getValueAt(int row, int col)
      {
        return data[row][col];
      }
      public String getColumnName(int column)
      {
        return hoved[column];
      }
      public void setValueAt(Object aValue, int row, int column)
      {
        data[row][column] = aValue;
      }
    };
    //tabel slut
   
    //Handlers
    MusHandler mus = new MusHandler();
    TasteHandler tasteHandler = new TasteHandler();

    //tabellen
    salgsTabel = new JTable(salgsTabelModel);
    salgsTabel.setBackground(Color.getHSBColor(15,15,15));
    JScrollPane scrollPane = new JScrollPane(salgsTabel);
    scrollPane.setPreferredSize(new Dimension(200, 110));
    salgsTabel.addMouseListener(mus);
    salgsTabel.addKeyListener(tasteHandler);

    //bredde på kolonnerne
    TableColumn column = null;
    for (int i = 0; i < 5; i++) {
      column = salgsTabel.getColumnModel().getColumn(i);
      if (i == 0){
        column.setPreferredWidth(75);
        }
      else if (i == 1) {
        column.setPreferredWidth(200);
      }
      else {
        column.setPreferredWidth(50);
      }
    }

    this.add(LordreNr, " 5, 1");
    this.add(scrollPane, " 1, 2, 5, 2");
    this.add(Ttotal, " 5, 4");
    this.add(Ltotal, " 1, 4");
  }
}
Avatar billede mikkelbm Nybegynder
11. marts 2004 - 17:40 #2
Dette eksempel illustrerer det meget godt:

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class Table extends JFrame
{   
    JTable table;   
   
    public Table()   
    {       
        Object[][] data = { {"1", "A"}, {"2", "B"}, {"3", "C"}, {"4", "D"}  };       
        String[] columnNames = {"Number","Letter"};       
        DefaultTableModel model = new DefaultTableModel(data, columnNames);       
       
        TableCellRenderer renderer = new TestRenderer();
       
        table = new JTable(model);       
        table.setDefaultRenderer(Object.class, renderer);       

        JScrollPane scrollPane = new JScrollPane( table );       
        getContentPane().add( scrollPane );   
    }   
   
    public static void main(String[] args)   
    {       
        Table frame = new Table();       
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );       
        frame.pack();       
        frame.setVisible(true);   
    }   
   
    class TestRenderer extends DefaultTableCellRenderer   
    {       
        public Component getTableCellRendererComponent(JTable table, Object value,    boolean isSelected, boolean hasFocus, int row, int column)       
        {           
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);           
           
            if (column == 1)               
                setHorizontalAlignment( LEFT );           
            else               
                setHorizontalAlignment( RIGHT );           
            return this;       
        }   
    }
}
Avatar billede saxtus Nybegynder
11. marts 2004 - 21:03 #3
kan du ikke tilpasse det lidt til min?? har forsøgt i snart 2 dage med alt muligt, og intet har bare virket
Avatar billede mikkelbm Nybegynder
11. marts 2004 - 21:37 #4
Jeg vil tro det er noget med:

TableCellRenderer renderer = new TestRenderer();
salgsTabel.setDefaultRenderer(Object.class, renderer);

Og så:

class TestRenderer extends DefaultTableCellRenderer   
    {       
        public Component getTableCellRendererComponent(JTable table, Object value,    boolean isSelected, boolean hasFocus, int row, int column)       
        {           
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);           
           
            // HER VÆLGER DU HVILKE KOLONNER DU VIL HØJRESTILLE
            if (column == 2)               
                setHorizontalAlignment( RIGHT );
            else if (column == 3)               
                setHorizontalAlignment( RIGHT );                       
            else               
                setHorizontalAlignment( LEFT );           
            return this;       
        }   
    }
Avatar billede saxtus Nybegynder
12. marts 2004 - 05:31 #5
perfekt - du er bare en rigtig ekspert!
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