Hallo Forum,
erstmal vorweg sollte ich erwähnen das ich ein neuling bin was java angeht, deswegen bitte ich um nachsicht
Also, ich habe mit NetBeans ein Form-Projekt angelegt und nun darauf aufbauend meine gesamte Funktionen eingebaut. Nun möchte ich gerne anhand vom Textinhalt einer gewissen Spalte(MO/MT) in meinem JTable die gesamte
Reihe(row) in einer anderen Farbe anzeigen lassen. Anhand dessen was ich bisher nachgelesen habe muss ich dazu
den DefaultTableCellRenderer sozusagen customizen. Nur irgendwie scheine ich gerade nix mehr zu kapieren. Ich habe mich nun seit 3 tagen durch so viele Tuts und Foren durchgewühlt das ich nu garnicht mehr durchsteige.
Die derzeitige Variante wie ich den DefaultTableCellRenderer implementiert habe ändert leider garnix im JTable
Demnach währe ich für jegliche Hilfe dankbar !!!
Folgend der gesamte Code fürs bessere Verständnis.
erstmal vorweg sollte ich erwähnen das ich ein neuling bin was java angeht, deswegen bitte ich um nachsicht
Also, ich habe mit NetBeans ein Form-Projekt angelegt und nun darauf aufbauend meine gesamte Funktionen eingebaut. Nun möchte ich gerne anhand vom Textinhalt einer gewissen Spalte(MO/MT) in meinem JTable die gesamte
Reihe(row) in einer anderen Farbe anzeigen lassen. Anhand dessen was ich bisher nachgelesen habe muss ich dazu
den DefaultTableCellRenderer sozusagen customizen. Nur irgendwie scheine ich gerade nix mehr zu kapieren. Ich habe mich nun seit 3 tagen durch so viele Tuts und Foren durchgewühlt das ich nu garnicht mehr durchsteige.
Die derzeitige Variante wie ich den DefaultTableCellRenderer implementiert habe ändert leider garnix im JTable
Demnach währe ich für jegliche Hilfe dankbar !!!
Folgend der gesamte Code fürs bessere Verständnis.
Code:
package LogTicker;
/*
* LogTicker.java
*
* Created on 16. März 2005, 20:03
*/
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.DefaultCellEditor;
import javax.swing.JTextField;
import javax.swing.JTable;
/**
*
* @author stargate
*/
public class LogTicker extends Applet {
public Socket mysock;
public BufferedReader inbuffer;
public PrintWriter outbuffer;
// Global String for our ServiceID
public String SessionID;
public String AppB;
public int AppBreite;
public boolean OnlyMO;
public boolean OnlyMT;
public long TimerIDX;
public class Task extends TimerTask {
public void run() {
try {
// Define Objects for reading and writing to the Socket
inbuffer = new BufferedReader (new InputStreamReader(mysock.getInputStream()));
outbuffer = new PrintWriter(mysock.getOutputStream(),true);
if(TimerIDX == 0){
String sendstring1 = "GET /livetickserver.cgi HTTP/1.0";
String sendstring2 = "Cookie: SID=" + SessionID;
outbuffer.println(sendstring1);
outbuffer.println(sendstring2);
outbuffer.println("");
}
// Get a Line from our Server
String myData = null;
myData = inbuffer.readLine();
if(myData == "--") {
mysock.close();
TimerIDX = 0;
try {
mysock = new Socket("127.0.0.1", 80);
mysock.setKeepAlive(true);
} catch (IOException e){
System.out.println("Found Error: " + e);
}
return;
}
// If the Server replys nothing(null) return to timer
// while(myData == null){
// myData = inbuffer.readLine();
// System.out.println("Got from Server => " + myData);
// }
if(myData == null){
return;
}
TimerIDX = 1;
// Define some Variables
String Datum,Art,Typ,HdNr,Text;
// Check if we have a MO or MT
if(myData.startsWith("0")){
Art = "MO";
if(OnlyMO == true){
return;
}
} else if(myData.startsWith("1")){
Art = "MT";
if(OnlyMT == true){
return;
}
} else { return; }
/* // Get Date
Calendar cal = new GregorianCalendar( TimeZone.getTimeZone("ECT") );
TimerIDX = cal.getTimeInMillis();
SimpleDateFormat formater = new SimpleDateFormat();
Datum = formater.format( cal.getTime() ); // 02.03.03 23:41
*/
// Split the Line from Server into Strings, seperated by a percent-letter
String HandyNr[] = myData.split("%");
// Check if we have an MO or MT
if(Art == "MO"){
Datum = HandyNr[1];
HdNr = HandyNr[4];
Text = HandyNr[5];
} else {
Datum = HandyNr[1];
HdNr = HandyNr[HandyNr.length-2];
Text = HandyNr[HandyNr.length-1];
}
// Add a Row to our Table
Vector data = new Vector();
data.addElement(Datum);
data.addElement(Art);
data.addElement(HdNr);
data.addElement(Text);
DefaultTableModel tableModel =(DefaultTableModel) jTable1.getModel();
if(jTable1.getRowCount() > 14){
for(int i=0;i < jTable1.getRowCount();i++){
tableModel.removeRow(i);
}
tableModel.fireTableDataChanged();
}
tableModel.addRow(data);
} catch (IOException e){
System.out.println("Found Error: " + e);
}
}
}
public void setColumnWidth(int pColumn, int pWidth){
//Get the column model.
TableColumnModel colModel = jTable1.getColumnModel();
//Get the column at index pColumn, and set its preferred width.
colModel.getColumn(pColumn).setMinWidth(pWidth);
colModel.getColumn(pColumn).setMaxWidth(pWidth);
colModel.getColumn(pColumn).setPreferredWidth(pWidth);
jTable1.invalidate();
jFrame1.invalidate();
jFrame1.validate();
jFrame1.repaint();
}
/** Initializes the applet LogTicker */
public void init() {
SessionID = getParameter("SID");
AppB = getParameter("WIDTH");
System.out.println("Vor:" + AppB);
AppBreite = Integer.parseInt( AppB );
System.out.println("Nach: " + AppBreite);
try {
mysock = new Socket("127.0.0.1", 80);
mysock.setKeepAlive(true);
} catch (IOException e){
System.out.println("Found Error: " + e);
}
initComponents();
TableCellRenderer MyRenderer = new MyRender();
jTable1.setDefaultRenderer(Integer.class, MyRenderer);
setColumnWidth(1, 30);
setColumnWidth(0, 60);
setColumnWidth(2, 150);
jFrame1.setResizable(true);
Timer timer1 = new Timer();
timer1.schedule(new Task(), 1000, 1000);
}
public class MyRender extends JTable implements TableCellRenderer {
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column){
if(table.getModel().getValueAt(row , 1 ).equals("MO")){
table.setForeground(Color.BLUE);
}
else
{
table.setForeground(Color.RED);
}
return this;
}
}
/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {
jFrame1 = new javax.swing.JFrame();
jPanel1 = new javax.swing.JPanel();
jCheckBox1 = new javax.swing.JCheckBox();
jCheckBox2 = new javax.swing.JCheckBox();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
setLayout(new java.awt.BorderLayout());
setName("LogTicker");
jPanel1.setLayout(null);
jPanel1.setAutoscrolls(true);
jPanel1.setMinimumSize(new java.awt.Dimension(750, 300));
jPanel1.setPreferredSize(new java.awt.Dimension(AppBreite - 2, 320));
jCheckBox1.setToolTipText("Beim Anhacken werden nur MOs Angezeigt");
jCheckBox1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jCheckBox1.setLabel("Nur MOs");
jCheckBox1.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jCheckBox1ItemStateChanged(evt);
}
});
jPanel1.add(jCheckBox1);
jCheckBox1.setBounds(300, 0, 80, 23);
jCheckBox2.setToolTipText("Beim Anhacken werden nur MTs Angezeigt");
jCheckBox2.setLabel("Nur MTs");
jCheckBox2.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jCheckBox2ItemStateChanged(evt);
}
});
jPanel1.add(jCheckBox2);
jCheckBox2.setBounds(400, 0, 90, 23);
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setAutoscrolls(true);
jScrollPane1.setMinimumSize(new java.awt.Dimension(750, 300));
jScrollPane1.setPreferredSize(new java.awt.Dimension(AppBreite, 300));
jScrollPane1.setWheelScrollingEnabled(false);
jFrame1.setDefaultLookAndFeelDecorated(true);
jTable1.setBorder(new javax.swing.border.EtchedBorder(javax.swing.border.EtchedBorder.RAISED));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Zeit", "Typ", "Kunde", "Text"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable1.setToolTipText("Anzeige der Nachrichten");
jTable1.setAutoCreateColumnsFromModel(false);
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
jTable1.setMaximumSize(new java.awt.Dimension(32767, 32767));
jTable1.setMinimumSize(new java.awt.Dimension(750, 300));
jTable1.setPreferredSize(new java.awt.Dimension(AppBreite, 300));
jTable1.setRowHeight(14);
jTable1.setRowMargin(2);
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
});
jScrollPane1.setViewportView(jTable1);
jTable1.getAccessibleContext().setAccessibleParent(jScrollPane1);
jPanel1.add(jScrollPane1);
jScrollPane1.setBounds(0, 30, 470, 420);
add(jPanel1, java.awt.BorderLayout.CENTER);
}
private void jCheckBox2ItemStateChanged(java.awt.event.ItemEvent evt) {
if(jCheckBox2.isSelected()){
OnlyMO = true;
} else {
OnlyMO = false;
} // TODO add your handling code here:
}
private void jCheckBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
if(jCheckBox1.isSelected()){
OnlyMT = true;
} else {
OnlyMT = false;
}
}
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
int RowIndex = jTable1.getSelectedRow();
Object data = jTable1.getValueAt(RowIndex, 2);
try
{
URL url = new URL("http://127.0.0.1/adm_showhist.cgi?Nr=" + data);
getAppletContext().showDocument(url,"showhist");
} catch(Exception e){
System.out.println(e);
}
}
// Variables declaration - do not modify
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JFrame jFrame1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
public javax.swing.JTable jTable1;
// End of variables declaration
}