JessicaJudt
Grünschnabel
Hallo Leute,
habe ein Problem, wie könnte ich ein Image aus meiner Tabelle erzeugen.
Also habe ich schon eine Tabelle erstellt, nach Eingabe von 2 verschiedenen Werte aus dieser Tabelle in Textfelder (als Minimum und Maximum) und drücken auf Button "showtable", werden Zellen von Werten zwischen eingegebenen Min und max mit Pink angezeigt. Meine Frage ist jetzt, Wie könnte ich aus dieser erhaltenen Tabelle eine Image als "tabelleImage.png" nach Drücken auf Button "showImage" erzeugen. Bei dem Image soll jetzt die Farbe Pink aus der ursprunglichen Tabelle mit Blau und dem Rest mit gelb in einem neuen Panel angezeigt?
Könnte mir bitte jemand helfen? Ich wäre sehr dankbar für Tipps.
MfG,
Jessica
habe ein Problem, wie könnte ich ein Image aus meiner Tabelle erzeugen.
Also habe ich schon eine Tabelle erstellt, nach Eingabe von 2 verschiedenen Werte aus dieser Tabelle in Textfelder (als Minimum und Maximum) und drücken auf Button "showtable", werden Zellen von Werten zwischen eingegebenen Min und max mit Pink angezeigt. Meine Frage ist jetzt, Wie könnte ich aus dieser erhaltenen Tabelle eine Image als "tabelleImage.png" nach Drücken auf Button "showImage" erzeugen. Bei dem Image soll jetzt die Farbe Pink aus der ursprunglichen Tabelle mit Blau und dem Rest mit gelb in einem neuen Panel angezeigt?
Könnte mir bitte jemand helfen? Ich wäre sehr dankbar für Tipps.
MfG,
Jessica
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class Table {
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("showTable"); //Nachdem man 2 Werte aus Rows als Minimum und Maximum im Textfield eingegeben hat
buttonPanel.add(button1);
JButton button2 = new JButton("showImage"); //Anzeige von "TabelleImage.png" aus der oben erhaltenen Tabelle in einem neuen Panel
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.setBackground(Color.WHITE);
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.setBackground(Color.PINK);
}
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();
}
});
}
}