Open GoogleCodeExporter opened 9 years ago
This is related to my other combobox bug. here my paint method. See comments for fixes public void drawComboBox(Graphics g, List cb) { int border = 2; Style style = cb.getStyle(); int leftPadding = style.getPadding(cb.isRTL(), Component.LEFT); int rightPadding = style.getPadding(cb.isRTL(), Component.RIGHT); setFG(g, cb); ListModel model = cb.getModel(); ListCellRenderer renderer = cb.getRenderer(); Object value = model.getItemAt(model.getSelectedIndex()); int comboImageWidth; if (comboImage != null) { comboImageWidth = comboImage.getWidth(); } else { comboImageWidth = style.getFont().getHeight(); } // Bozza specific // Bozza fix int borderWidth = style.getBorder() == null ? 0 : style.getBorder().getThickness(); int cellX = cb.getX() + borderWidth + style.getPadding(false, Component.TOP); if (model.getSize() > 0) { Component cmp = renderer.getListCellRendererComponent(cb, value, model.getSelectedIndex(), cb.hasFocus()); cmp.setX(cellX); cmp.setY(cb.getY() + style.getPadding(false, Component.TOP)); cmp.setWidth(cb.getWidth() - comboImageWidth - rightPadding - leftPadding); cmp.setHeight(cb.getHeight() - style.getPadding(false, Component.TOP) - style.getPadding(false, Component.BOTTOM)); cmp.paint(g); } g.setColor(style.getBgColor()); int y = cb.getY(); int height = cb.getHeight(); int width = comboImageWidth + border; int x = cb.getX(); if (cb.isRTL()) { x += leftPadding; } else { x += cb.getWidth() - comboImageWidth - rightPadding; // Bozza specific // Bozza fix x -= borderWidth; } // Bozza specific // We will always have image /*if (comboImage != null) {*/ g.drawImage(comboImage, x, y + height / 2 - comboImage.getHeight() / 2); /* } else { int color = g.getColor(); // brighten or darken the color slightly int destColor = findDestColor(color); g.fillLinearGradient(g.getColor(), destColor, x, y, width, height, false); g.setColor(color); g.drawRect(x, y, width, height - 1); width--; height--; //g.drawRect(x, y, width, height); g.translate(x + 1, y + 1); g.setColor(0x111111); int x1 = scaleCoordinate(2.5652081f, 16, width); int y1 = scaleCoordinate(4.4753664f, 16, height); int x2 = scaleCoordinate(8.2872691f, 16, width); int y2 = scaleCoordinate(10f, 16, height); int x3 = scaleCoordinate(13.516078f, 16, width); int y3 = y1; g.fillTriangle(x1, y1, x2, y2, x3, y3); g.translate(-1, -1); g.setColor(style.getFgColor()); g.fillTriangle(x1, y1, x2, y2, x3, y3); //g.setColor(style.getFgColor()); //g.fillTriangle(x1 + 2, y1 + 2, x2, y2 - 2, x3 - 2, y3 + 2); g.translate(-x, -y); }*/ }
Original issue reported on code.google.com by jkoo...@gmail.com on 13 Jul 2012 at 10:04
jkoo...@gmail.com
Original issue reported on code.google.com by
jkoo...@gmail.com
on 13 Jul 2012 at 10:04