2016-12-12 4 views
2

Ich hatte eine JTable in Java und ich möchte wissen, wie ich die Schriftart in Fettdruck abhängig von einem ganzzahligen Wert ändern kann. Ich habe derzeit diese Tabelle und ich möchte die Schriftart der Zeile abhängig von der Anzahl der Personen im Trainer ändern. Ich bin immer noch neu im Swing und ich habe keine Ahnung wie ich das machen soll. Ich brauche eine Lösung, die so etwas wie tun würde:Jtable Zeilenschriftart in Fettschrift ändern

if (num_people >17 && num_people<26){ 
    //change row font to bold 
} 

dies ist ein Beispiel dafür, was ich das Bild, wenn folgende benötigen würde ich unten von dem, was ich bereits:

What i have so far in my program

Link zu mein aktueller Code: https://gist.github.com/anonymous/015022f7ad55ff9664e2edaea6a58d5a

+1

Gleiche Antwort, die jeden Tag zweimal oder mehr auf einigen gegeben wird. Verwenden Sie einen Renderer. * "Ich möchte die Schriftart der Reihe ändern, abhängig von der Anzahl der Personen im Trainer. Ich bin immer noch neu im Schwingen und ich habe keine Ahnung, wie man das macht" * Deshalb sollten Sie das [How to Use Tabellen] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) Tutorial, das Sie offensichtlich nicht gemacht haben. –

+0

@AndrewThompson die Hacke, um Tabellen Tutorial zu verwenden zeigt nicht, wie Text fett zu machen. Ich habe versucht, es zu finden, aber ich konnte es nicht. mbye, du könntest es auf mich hinweisen –

+0

Oh, um laut zu schreien .. Es zeigt nicht jede Variante, jede mögliche Sache zu machen, weil du verschiedene Teile der API für verschiedene Dinge benutzen kannst! Sind Sie sicher, dass Sie für die Programmierung ausgeschnitten sind? –

Antwort

4
public class CellRenderer extends DefaultTableCellRenderer { 

private static final long serialVersionUID = 1L; 

@Override 
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, 
     int column) { 
    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 

    if (value>17 value<26) { 
     this.setValue(table.getValueAt(row, column)); 
     this.setFont(this.getFont().deriveFont(Font.BOLD)); 
    } 
    return this; 
} 
} 

dies ist, wie eine Zelle Renderer wie mit fetter Schrift aussehen würden. Ich habe es nicht getestet. Sie rufen table.getColumnModel().getColumn(x).setCellRenderer(new CellRenderer()); auf, nachdem Sie Ihre JTable initialisiert haben, und rufen Sie sie für jede Spalte auf, die diese Schriftart anwenden soll.

+0

Wo kann ich das einfügen? –

+1

@SakshamGoyal neue Klasse und verwenden Sie sie mit 'table.getColumnModel(). GetColumn (x) .setCellRenderer (neuer CellRenderer());' wobei x die Spalte ist, die Sie ändern möchten. Wenn es alle Spalten, iterieren über sie – XtremeBaumer

+0

Bitte denken Sie daran, ich bin neu zu schwingen, wenn Sie auf meinen Code schaue ich an der Spitze, können Sie bitte das verwenden und mir sagen, wie es geht. Ich habe noch nie Swing verwendet. vielleicht, wenn Sie Ihre Antwort bearbeiten könnten, so weiß ich, wie das geht. –

3

Auschecken Table Row Rendering. Es zeigt, wie Rendering auf eine bestimmte Zeile in einer Tabelle angewendet wird, indem die Methode prepareRenderer(....) überschrieben wird. Dies ist besonders nützlich, wenn Sie für jede Spalte verschiedene Renderer verwenden.

Sie sollten wirklich verschiedene Renderer für bestimmte Spalten in Ihrer Tabelle verwenden. Einige Zellen sollten Zeichenfolgen darstellen, und einige sollten Zahlenwerte darstellen, bei denen die Werte normalerweise rechtsbündig angezeigt werden.

Sie können auch Table Format Renderers auschecken, wodurch es einfacher ist, benutzerdefinierte Renderings mit spezieller Formatierung der Daten zu erstellen.

+0

können Sie bitte meinen Code ansehen und mir zeigen? Ich bin neu zu schwingen, also weiß ich nicht, wie man es macht –

+1

@SakshamGoyal, ich habe Ihnen Arbeitscode gezeigt. Folgen Sie dem Link und laden Sie die Arbeitscodebeispiele herunter. Nehmen Sie sich etwas Zeit, um zu verstehen, wie sie funktionieren, und passen Sie dann die Logik für Ihre genauen Anforderungen an. 'Ich bin neu zu schwingen' - und du lernst, indem du es versuchst. Sie werden kaum Code-Beispiele finden, die genau das tun, was Sie wollen. Sie müssen also das Konzept verstehen und dann den Code anpassen, den Ihnen die Leute als Beispiele geben. – camickr