में केवल विशिष्ट कोशिकाओं को रंग दें I इस समस्या के लिए समाधान ढूंढ रहे हैं: मेरे पास एक एक्सेल फ़ाइल है, जिसमें डेटा है। कुछ कोशिकाओं में पीले रंग की पृष्ठभूमि होती है। मैंने पहले ही जेटीबल को टेक्स्ट आयात करने के लिए एक कोड बनाया है, जो ठीक काम करता है। लेकिन मैं विशिष्ट कोशिकाओं के लिए पृष्ठभूमि-सेल-रंग भी आयात करना चाहता हूं। सादगी के लिए - इस उदाहरण के लिए, मैंने लूप का उपयोग नहीं किया, स्रोत से एक्सेल डेटा पढ़ना आदि। मंच पढ़ने के बाद मुझे समझ में आया कि मुझे कस्टमसेलरेंडर की आवश्यकता है।JTable
मुझे इस दृष्टिकोण में कोई समस्या है, क्योंकि यह कोड कॉलम में कोशिकाओं को पहले से रंगता है, लेकिन जब मैं इस तालिका में रंगीन कोशिकाओं पर स्क्रॉल करना शुरू करता हूं, तो यह पूरे कॉलम को पीले रंग में याद करता है। (स्क्रीनशॉट देखें)
मैंने सोचा कि मैं विशेष रूप से शेष कोशिकाओं को सफेद रंग में रंग देने के लिए अन्य कथन जोड़ सकता हूं, लेकिन यह दृष्टिकोण मेरे लिए काम नहीं करेगा, क्योंकि मैं अपने पिछले सेल परिणामों को ओवरराइट कर रहा हूं।
क्या आप मुझे इस पर समाधान के लिए इंगित कर सकते हैं? (क्या यह एक बग है, या जेटीबल के अपेक्षित व्यवहार है?)। मैं NetBeans और जीयूआई खींचें n ड्रॉप जनरेटर का उपयोग कर रहा है, ताकि जब अपने सेल पीले नहीं होना चाहिए
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class MyRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int[][] coordinatesYellow = new int[3][2];
//[row][column] these cells are yellow
coordinatesYellow[0][0] = 3;
coordinatesYellow[0][1] = 2;
coordinatesYellow[1][0] = 4;
coordinatesYellow[1][1] = 2;
coordinatesYellow[2][0] = 2;
coordinatesYellow[2][1] = 2;
for (int i = 0; i < 3; i++) {
if ((row == coordinatesYellow[i][0]) && (column == coordinatesYellow[i][1])) {
c.setBackground(Color.yellow);
}
}
return c;
}
}
// And this is the statement I use for calling the renderer:
// resultsTable.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());
@TT - अपनी टिप्पणी अनिवार्य रूप से एक पूरा जवाब है। – tucuxi
@tucuxi सच है, यह एक टिप्पणी के रूप में पोस्ट किया गया इतना छोटा लगता है। मैंने इसे जवाब दिया है। –
यह भी देखें कि http://stackoverflow.com/questions/22606227/colored-table-cells (यहां तक कि एक डुप्लिकेट भी हो सकता है ...) – Marco13