JTable Daten bearbeiten und Grauwertbild erzeugen!

Status
Nicht offen für weitere Antworten.
S

SandraJudt

Gast
Hi,

bin noch Java-GUI Neulingin. Also ich habe eine Tabelle mit Daten erzeugt und möchte wie folgt weitermachen.
Nach Eingabe von 2 beliebigen ausgewählten Werten aus meiner Tabelle im Textfiled (hier Minimum und Maximum) und beim Drücken des Buttons "coloredTable", sollten alle Werte aus der Tabelle kleiner als dem eigegebenen Minimum und größer dem eingegebenen Maximum mit der Farbe Blau in der zugehörigen Tabellezelle angezeigt werden.

Ich habe mir überlegt das MVC zu verwenden, bin gerade am Probieren, aber scheint auch nicht einfach zu sein.
Hätte man eine bessere Idee oder Tipps, wie man so was umsetzen kann?

Gruß,
Jessica

Hier ist die Quellcode:

Code:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.Font;
import java.awt.Color;
import java.awt.Window;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

	public class TableTest {
	  public static void main(String args[]) {
	    JFrame f = new JFrame("JTable Testing");
	    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    Container content = f.getContentPane();
	    Object rows[][] = { { "-1.02", "2.00", "-5.00" },
	                        { "4.92", "3.09", "4.00" },
	                        { "-3.27", "1.78", "5.00" },
	                        { "-2.98", "-4.10", "0.18" },
	                        {"4.76", "-2.29", "-2.22"}};
	        
	    Object columns[] = { "A1","A2","A3" };
	    JTable table = new JTable(rows, columns);
	    
	    JPanel textfieldPanel = new JPanel();
	    JLabel label1 = new JLabel(
	    "Minimum:",
	    SwingConstants.LEFT);
	    textfieldPanel.add(label1);
	    JTextField tf1 = new JTextField(5);
	    textfieldPanel.add(tf1);
	    textfieldPanel.setBorder(BorderFactory.createEtchedBorder()); 
	    f.getContentPane().add(textfieldPanel, BorderLayout.NORTH); 
	    
	    JLabel label2 = new JLabel(
	    "Maximum:",
	    SwingConstants.LEFT);
	    textfieldPanel.add(label2);
	    JTextField tf2 = new JTextField(5);
	    textfieldPanel.add(tf2);
	    textfieldPanel.setBorder(BorderFactory.createEtchedBorder()); 
	    f.getContentPane().add(textfieldPanel, BorderLayout.NORTH); 
	    
	    JPanel buttonPanel = new JPanel();
	    JButton button1 = new JButton("coloredTable");
	    buttonPanel.add(button1);
	    buttonPanel.setBorder(BorderFactory.createEtchedBorder()); 
	    f.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
	    
	    JScrollPane scrollPane = new JScrollPane(table);
	    content.add(scrollPane, BorderLayout.CENTER);
	    f.setSize(300, 200);
	    f.setVisible(true);
	  }

	
	}
[/code]
 

André Uhres

Top Contributor
Meinst du so?
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableTest3 {
    public static void main(String args[]) {
        JFrame f = new JFrame("JTable Testing");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container content = f.getContentPane();
        Object rows[][] = {{"-1.02", "2.00", "-5.00"},
            {"4.92", "3.09", "4.00"},
            {"-3.27", "1.78", "5.00"},
            {"-2.98", "-4.10", "0.18"},
            {"4.76", "-2.29", "-2.22"}};
        Object columns[] = {"A1", "A2", "A3"};
        JPanel textfieldPanel = new JPanel();
        JLabel label1 = new JLabel("Minimum:", SwingConstants.LEFT);
        textfieldPanel.add(label1);
        final JTextField tf1 = new JTextField(5);
        textfieldPanel.add(tf1);
        textfieldPanel.setBorder(BorderFactory.createEtchedBorder());
        f.getContentPane().add(textfieldPanel, BorderLayout.NORTH);
        JLabel label2 = new JLabel("Maximum:", SwingConstants.LEFT);
        textfieldPanel.add(label2);
        final JTextField tf2 = new JTextField(5);
        textfieldPanel.add(tf2);
        textfieldPanel.setBorder(BorderFactory.createEtchedBorder());
        f.getContentPane().add(textfieldPanel, BorderLayout.NORTH);
        JPanel buttonPanel = new JPanel();
        JButton button1 = new JButton("coloredTable");
        buttonPanel.add(button1);
        buttonPanel.setBorder(BorderFactory.createEtchedBorder());
        f.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        final JTable table = new JTable(rows, columns) {
            @Override
            public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                c.setForeground(Color.BLACK);
                double value = 0;
                double min = 0;
                double max = 0;
                String val = getValueAt(row, column).toString();
                if (!val.equals("")) {
                    value = Double.parseDouble(val);
                }
                String minS = tf1.getText();
                if (!minS.equals("")) {
                    min = Double.parseDouble(minS);
                }
                String maxS = tf2.getText();
                if (!maxS.equals("")) {
                    max = Double.parseDouble(maxS);
                }
                if (value < min || value > max) {
                    c.setForeground(Color.BLUE);
                }
                return c;
            }
        };
        JScrollPane scrollPane = new JScrollPane(table);
        content.add(scrollPane, BorderLayout.CENTER);
        f.setSize(300, 200);
        f.setVisible(true);
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                table.repaint();
            }
        });
    }
}
 
S

SandraJudt

Gast
Hi André,

vielen Dank für Deine Antwort. Also die Sache mit ActionListener ist definitiv in der Richtung, aber der Prozeß sollte wie folt verlaufen:

- 2 verschiedene und zufällige Werte aus der Tabelle (und nur aus der Tabelle) auswählen.
- Die 2 Werte als Minimum und Maximum betrachten und im Textfield eingeben (Mit der Bedingung Minimum immer kleiner als Maximum).
- Beim Drücken auf Button "coloredTable" sollen die Tabellenzellen aller Werte kleiner als dem im Textfield eigegebenen Minimum und größer als dem im Textfield eigegebenen Maximum mit der Farbe Blau markiert werden

Beispiel: Meine derzeitige Tabelle besteht aus 15 Werte, als Minimum und Maximum betrachte und gebe ich im Textfield -2.22 bzw. 3.09 ein. Alle andere Werte < -2.22 und > 3.09 sollen nach Drücken auf Button "coloredTable", die blaue Hintergrundfarbe haben. Hoffe, bin expliziter geworden.

Gruß,
Jessica
 
J

JessicaJudt

Gast
Hi André,

sorry, war mein Fehler. Ich habe mich erst nur auf die Tabelle Ausgabe konzentriert, als ich die Werte mit der Farbe Blau gesehen habe, dachte schon, vielleicht wurde das Ding von mir nicht genau erklärt. Aber beim genau Einlesen deines Codes und Probieren, war genau was ich wollte. Vielen Dank für deine Hilfe.

Ich stelle mich die Frage, ob eine Möglichkeit aus der erhaltenen Tabelle oder aus der ursprunglichen Tabelle gibt, ein Grauwertbild zu erzeugen.
Inder Art, neues Button "Grauwertbild" erstellen und dann beim Drücken, dass man eine Graphik als Grauwertbild in einem neuen Panel erzeugen kann, aber hier werden z.B. die Pixelfarbe für Werte kleiner dem Minimum und größer dem Maximum mit gelb angezeigt, dem Rest mit grün.

Quellecode:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableTest3 {
    public static void main(String args[]) {
        JFrame f = new JFrame("JTable Testing");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container content = f.getContentPane();
        Object rows[][] = {{"-1.02", "2.00", "-5.00"},
            {"4.92", "3.09", "4.00"},
            {"-3.27", "1.78", "5.00"},
            {"-2.98", "-4.10", "0.18"},
            {"4.76", "-2.29", "-2.22"}};
        Object columns[] = {"A1", "A2", "A3"};
        JPanel textfieldPanel = new JPanel();
        JLabel label1 = new JLabel("Minimum:", SwingConstants.LEFT);
        textfieldPanel.add(label1);
        final JTextField tf1 = new JTextField(5);
        textfieldPanel.add(tf1);
        textfieldPanel.setBorder(BorderFactory.createEtchedBorder());
        f.getContentPane().add(textfieldPanel, BorderLayout.NORTH);
        JLabel label2 = new JLabel("Maximum:", SwingConstants.LEFT);
        textfieldPanel.add(label2);
        final JTextField tf2 = new JTextField(5);
        textfieldPanel.add(tf2);
        textfieldPanel.setBorder(BorderFactory.createEtchedBorder());
        f.getContentPane().add(textfieldPanel, BorderLayout.NORTH);
        JPanel buttonPanel = new JPanel();
        JButton button1 = new JButton("coloredTable");
        buttonPanel.add(button1);
        JButton button2 = new JButton("Grauwertbild");
	buttonPanel.add(button2);
        buttonPanel.setBorder(BorderFactory.createEtchedBorder());
        f.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        final JTable table = new JTable(rows, columns) {
            @Override
            public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                c.setForeground(Color.BLACK);
                double value = 0;
                double min = 0;
                double max = 0;
                String val = getValueAt(row, column).toString();
                if (!val.equals("")) {
                    value = Double.parseDouble(val);
                }
                String minS = tf1.getText();
                if (!minS.equals("")) {
                    min = Double.parseDouble(minS);
                }
                String maxS = tf2.getText();
                if (!maxS.equals("")) {
                    max = Double.parseDouble(maxS);
                }
                if (value < min || value > max) {
                    c.setForeground(Color.BLUE);
                }
                return c;
            }
        };
        JScrollPane scrollPane = new JScrollPane(table);
        content.add(scrollPane, BorderLayout.CENTER);
        f.setSize(300, 200);
        f.setVisible(true);
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                table.repaint();
            }
        });
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6
Ollek IndexOutOfBoundsException bei neuen Daten in JTable AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable Daten unsichtbar AWT, Swing, JavaFX & SWT 12
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing Daten aus Datenbank in JTable AWT, Swing, JavaFX & SWT 2
L Daten werden in JTable nicht angezeigt:( AWT, Swing, JavaFX & SWT 6
J Daten in JTable nach Sortierung auslesen AWT, Swing, JavaFX & SWT 2
hdi Swing JTable & Filtern: Daten nicht in der View AWT, Swing, JavaFX & SWT 2
S JTable Bug - eingegebene Daten werden falsch geparst :( AWT, Swing, JavaFX & SWT 4
hdi Swing JTable: Löschen vom Daten im Model AWT, Swing, JavaFX & SWT 7
U JTable mit Daten aus einer HashMap füllen AWT, Swing, JavaFX & SWT 8
R JTable für sehr viele Daten sehr langsam AWT, Swing, JavaFX & SWT 20
B JTable: Wie speichert man manuell eingegebene Daten ausTable AWT, Swing, JavaFX & SWT 2
A JTable Vector mit Daten Ordnen bei setAutoCreateRowS AWT, Swing, JavaFX & SWT 8
R Daten in JTable in mehreren Zeilen darstellen AWT, Swing, JavaFX & SWT 11
C JTable fehlende Daten AWT, Swing, JavaFX & SWT 2
raptorrs Daten aus JTable in JTextField übertragen AWT, Swing, JavaFX & SWT 11
G JTable Daten auslesen AWT, Swing, JavaFX & SWT 2
M JTable alte Daten vor Änderung abfangen AWT, Swing, JavaFX & SWT 11
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
M Auslesen veränderter Daten in einer jTable AWT, Swing, JavaFX & SWT 2
J jTable Daten werden nicht sofort sichtbar AWT, Swing, JavaFX & SWT 5
G JTable dynamische Darstellung der ankommenden Daten AWT, Swing, JavaFX & SWT 19
vogella JTable - Hinzufügen von Datensätzen und Ändern von Daten AWT, Swing, JavaFX & SWT 2
D JTable und ungültige Daten AWT, Swing, JavaFX & SWT 2
F JTable Daten aktualisieren AWT, Swing, JavaFX & SWT 2
F JTable Daten übernehmen AWT, Swing, JavaFX & SWT 2
D Daten über Button-Druck in JTable einfügen AWT, Swing, JavaFX & SWT 7
R nur bestimmte Daten in JTable anzeigen lassen? AWT, Swing, JavaFX & SWT 3
L JTable und Daten aus einer ArrayList AWT, Swing, JavaFX & SWT 6
D JTable zum Einfügen/Löschen/Editieren von Daten AWT, Swing, JavaFX & SWT 5
J JTable / Model Daten verändern AWT, Swing, JavaFX & SWT 5
M JTable zeigt daten nicht aktuell an AWT, Swing, JavaFX & SWT 4
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
L Checkbox in JTable (again), bei true Daten in Header AWT, Swing, JavaFX & SWT 7
G Problem mit JTable / mit dem Eintragen der Daten aus Vector AWT, Swing, JavaFX & SWT 4
R JTable mit Daten aus der Datenbank füllen AWT, Swing, JavaFX & SWT 3
V Daten ins JTable laden bei Start der GUI AWT, Swing, JavaFX & SWT 6
M Daten aus Datenbank ins JTable einfügen AWT, Swing, JavaFX & SWT 4
V Daten im JTable speichern AWT, Swing, JavaFX & SWT 11
G JTable daten auslesen AWT, Swing, JavaFX & SWT 6
M Daten in JTable aus DB schreiben ? AWT, Swing, JavaFX & SWT 16
H Daten aus einer JTable in einer Datei speichern AWT, Swing, JavaFX & SWT 10
D Merken, daß Daten in der JTable sich geändert haben... AWT, Swing, JavaFX & SWT 2
L Daten mittels ObjectInputStream ins JTable AWT, Swing, JavaFX & SWT 7
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben