JcomboBox Border
I want to create a JcomboBox with
1. No outer border
2. No line or border seperating the text area of the combobox and the arrow button.
If you use JBuilder ( I use 9.0, dont know if other versions have this feature ) , the jcombobox that allows you to select the current project, is a perfect example of what I want my Jcombobox to look like. Jbuttons have a simple method call - setBorderPainted(false),,, its unclear to me why the same wasnt implemented on jcomboboxes.
If I do this
projectChooserBox.setUI(new javax.swing.plaf.basic.BasicComboBoxUI());
the outer border is removed, but there is a distinct border between the text area and arrow button of the
combobox.
Any ideas ?
Hi,
I havent set a look and feel to the application, and Im running it on a Windows XP machine, so I assume the look and feel is Windows.
As far as the look and feel of JBuilder IDE goes, I have that set to Borland, but the combobox remains the same for all the options.
I have a sneaky feeling that the JBuilder jcombobox is not a jcombobox in reality. It could be a JButton with a Jpopupmenu appearing below it when clicked.
Similar Messages
-
JComboBox - Bottom border is not visible for the first time
JComboBox - Bottom border is not visible for the first time i click on the arrow to drop the list down.
This happens because the list when dropped down goes out of the frame.
If have the increased the size of the Frame then i am able to see it,but i dont want to do this.
I am using jdk1.3.1_02.
Any Help would be great.
Please find the code below.
Thanks,
Sridhar.
//file: Lister.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Lister {
public static void main(String[] args) {
JFrame frame = new JFrame("Lister v1.0");
// create a combo box
String [] items = { "uno", "due", "tre", "quattro", "cinque",
"sei", "sette", "otto", "nove", "deici",
"undici", "dodici" };
JComboBox comboBox = new JComboBox(items);
comboBox.setEditable(true);
// put the controls the content pane
Container c = frame.getContentPane( );
JPanel comboPanel = new JPanel( );
comboPanel.add(comboBox);
c.add(comboPanel, BorderLayout.NORTH);
c.setBackground(Color.white);
comboBox.setBackground(Color.white);
comboPanel.setBackground(Color.white);
frame.setBackground(Color.white);
frame.setResizable(false);
frame.setSize(200, 200);
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible(true);
}Hello,
try this:JPanel comboPanel = new JPanel(new BorderLayout());Regards,
Tim -
Drop down list(JComboBox) - Bottom border is not visible for the first time
Drop down list(Combo-box) JComboBox - Bottom border is not visible for the first time i click on the arrow to drop the list down.
I am using jdk1.3.1_02.
Did any one face this issue.
Please let me know.
Thanks,
Sridhar.I must be a little confused regarding your question.
You can simply change your code frame.setSize(200, 200); to frame.setSize(400, 400);When you say you are unable to see the border are you specifically talking about the border of the frame or the border of the combo box?
Lance -
i'm trying to change the border for a JComboBox...actually the default border for a JComboBox is null but it is the border for the JScrollPane used by the JComboBox that i want to change....i'm lost as to how to access the JScrollPane that the JComboBox uses so i can change it's border...any ideas?...thanx in advance...
This might help you see the component you're looking for, but at YATArchivist said, it is a look and feel not a JCombobox componentimport javax.swing.*;
import java.awt.*;
import java.util.Random;
import java.awt.event.*;
public class ComboScroll {
static Random rnd = new Random();
public static void main (String[] args) {
try {
if (args.length > 0) {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
final JComboBox combobox = new JComboBox(
("foo|bar|baz|" + UIManager.getCrossPlatformLookAndFeelClassName()).split("\\|"));
combobox.setEditable(true);
final JFrame frame = new JFrame("ComboScroll");
frame.getContentPane().add(combobox);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Timer timer = new Timer(800, new ActionListener () {
public void actionPerformed (ActionEvent e) {
dumpTree(frame, 0);
Window[] windows = frame.getOwnedWindows();
for (int index = 0; index < windows.length; index++) {
dumpTree(windows[index], 0);
System.out.println();
timer.setRepeats(true);
timer.start();
static void dumpTree (Component component, int depth) {
String className = component.getClass().getName();
System.out.println(indent(depth) + component.getName() + ":" + className);
if (component instanceof Container) {
Container container = (Container)component;
for (int index = 0; index < container.getComponentCount(); index++) {
dumpTree(container.getComponent(index), depth + 1);
if (component instanceof JComponent) {
try {
((JComponent)component).setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createMatteBorder(4, 4, 4, 4, new Color(
rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256))),
className.substring(className.lastIndexOf('.') + 1)));
} catch (Exception ex) {
if (depth == 0) {
System.out.println();
static String indent (int depth) {
return " ".substring(0, depth * 2);
}Pete -
Can the JComboBox 'arrow' be enclosed in a border ?
I am displaying the 'arrow' background in a different color than the background of the list portion of a JComboBox. It would look a lot better if I could put a border around the arrow.
I have seen this done by implementing your own ComboBox, but I was wondering if there is a way to do this by setting an underlying component.
thank you.If you are asking if NI has a PCI Express (PCIe) version of the 6250, I can't find one on the website, so my guess is no.
However, I did find a PCIe-6251 and PCIe-6259 by doing a simple search of PCIe.
If you are asking if you can put the PCI-6250 in a PCI Express slot, the answer is no.
You also mentioned PCIx (I'm assuming you meant PCI-X), which is different than PCIe. I did a search for it on www.ni.com and these are the results. Although the PCI-6250 is not explicitly listed (I think some of the articles have not been updated), I'm fairly confident that a 6250 will work in a PCI-X bus.
Message Edited by e-Cash-Money on 02-01-2006 12:24 PM
Eric
DE For Life! -
JComboBox drop down list border color
When we click arrow button of JComboBox we get drop down list with black colored border.
But I want to set border of dropdown list to grey color.
How to do that?The required border size and color is mentioned in javax.swing.plaf.basic.BasicComboPopup instantiated in javax.swing.plaf.basic.BasicComboBoxUI; and unfortunately that is not directly accessible.
One of the approach would be:
1. subclass BasicComboPopup - here you'll simply set the derived class's border to desired one.
2. subclass BasicComboBoxUI - here you'll override createPopup (to return derived BasicComboPopup object) and createUI (to return derived BasicComboBoxUI object)
3. make a call to target JComboBox's setUI to set new instance of derived BasicComboBoxUI object.
Caution:
1. This approach will be implementation specific, for more generalized result try creating your own look and feel.
2. May need to tweek some more code to get final output. -
Setting the border when JCombobox get focused
Hello,
Is it possible to set the border when the JCombobox get focused?
In fact, I would like to hide the border at all, but remain the "setFocusable(true)"
Thanks in advance.So why did you post your last three questions in the Swing forum, but then decide to post this "Swing related" question in the Java Programming forum?
Is it possible to set the border when the JCombobox get focused?Try it!
If you need further help then you need to create a [Short, Self Contained, Compilable and Executable, Example Program (SSCCE)|http://homepage1.nifty.com/algafield/sscce.html], that demonstrates the incorrect behaviour.
Don't forget to use the Code Formatting Tags so the posted code retains its original formatting. That is done by selecting the code and then clicking on the "Code" button above the question input area. -
Hi all:
I have been reading messages about combos and borders, but did not found an answer, so, here it is the question:
I want a JComboBox that, when not active, does not show any border.
For the moment, thanks to uiDefaults.put( "Button.border", lineBorder) I have just removed the border in the arrow button. But the selected item label, displayed by a javax.swing.CellRendererPane, still paints a compound border.
Any help?Yes, that's right.
Following your suggestions I have reached the simplest, I hope, solution. I do not like it very much, because it requires overriding a UI class so future improvements to that class, OK just the method overridden, will not be noticed. But for the moment, it is the only thing I have.
The solution:
1.- Register a new ComboBoxUI
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put( "ComboBoxUI" , "es.shin.plaf.metal.LightMetalComboBoxUI");2.- class LightMetalComboBoxUI
package es.shin.plaf.metal;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.metal.MetalComboBoxUI;
import javax.swing.plaf.metal.MetalLookAndFeel;
* @author jroman
public class LightMetalComboBoxUI extends MetalComboBoxUI
public static ComponentUI createUI( JComponent c)
return new LightMetalComboBoxUI();
@Override
public void paintCurrentValueBackground
( Graphics g, Rectangle bounds, boolean hasFocus)
if ( g == null || bounds == null )
throw new NullPointerException(
"Must supply a non-null Graphics and Rectangle");
g.setColor( Color.LIGHT_GRAY);
g.drawRect( bounds.x, bounds.y, bounds.width, bounds.height - 1);
// This is the inner rectangle that makes the border of the label of size 2.
// I do not paint it, since I want a lighter label.
// g.setColor( MetalLookAndFeel.getControlShadow());
// g.drawRect( bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 3);
if ( hasFocus && !isPopupVisible( comboBox) && arrowButton != null)
g.setColor( listBox.getSelectionBackground());
Insets buttonInsets= arrowButton.getInsets();
if ( buttonInsets.top > 2 )
g.fillRect( bounds.x + 2, bounds.y + 2, bounds.width - 3, buttonInsets.top - 2);
if ( buttonInsets.bottom > 2 )
g.fillRect( bounds.x + 2, bounds.y + bounds.height - buttonInsets.bottom, bounds.width - 3,
buttonInsets.bottom - 2);
}I hope this serves to someone...
Cheers. -
When moving from 1.4 to 1.5, JComboBox now has a white border around it when it's selected. This is not the border color, I'm setting that, I'm also setting the background color but now have an additional white border. How to I get rid of it?
-dif your comboBox is editable
JTextField tf = (JTextField)comboBox.getEditor().getEditorComponent();
tf.setBorder(BorderFactory.createEmptyBorder(0,0,0,0)); -
Problem with strange border-colors on windows 2000
On windows 2000, I have the problem, that my JButtons, JComboboxes and so on are rainbow-colord (if I do not set a special Border to theser Components). What can I do (if possible, I would not set explicit borders to all Components; and for Popups-Dialogues, it is not possible to set spcial borders, is it?)
Thank you for any help!I'm seeing the exact same behavior on my 8.1 Laptop. I tried deleting the Skype tmp folder as suggested elsewhere, I also uninstalled and reinstalled Skype for Desktop and still can't hang up a call and often can't answer a call either. Makes Skype completely useless at this point.
-
Problem with JComboBox in a fixed JToolBar
Hi,
I've created a JComboBox in a JToolBar that contains all available fonts. When I click on the drop down arrow I only see the first font and a small part of the second. The JComboBox is dropped down in fact just as far as the border of the JToolbar. All the rest isn't visible to me; it seems that they are behind the other components of my JApplet. However, if I move the JToolBar from it's position (as it's a floatable component), there's no problem at all. So I'm wondering why I can't see everything when the JToolBar is docked.... Can anyone help me?
Thanks in advance!!
E_Jit seems that they are behind the other components of my JApplet.Sounds like you are mixing AWT components with your Swing application. Make sure you are using JPanel, JButton ... and not Panel, Button....
-
Hi friends,
I am adding JComboBox in JTable its working properly
But data is not adding dynamically to JComboBox
I am Sending my Code plz give me reply
I am Struggleing from 1 week on wards
package com.dnt.autopopulation;
import javax.swing.*;
import java.awt.*;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import java.awt.event.*;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.TableModelEvent;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Locale;
import java.text.SimpleDateFormat;
import java.util.Vector;
import javax.swing.border.*;
import com.dnt.eaip.Connectmagr;
import com.dnt.eaip.*;
import com.dnt.util.*;
import javax.swing.plaf.ButtonUI;
import com.dnt.admin.EndStartDateCheck;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
public class AutoPopRollBack extends JPanel {
boolean selection = false;
public static final int HAND_CURSOR = 12;
Cursor cursor = new Cursor(HAND_CURSOR);
int selectedRow = -1;
ImageIcon headertop1 = new ImageIcon("./images/k2topbar.gif");
JLabel HeaderLabe = new JLabel(headertop1);
Border border1 = new EtchedBorder(EtchedBorder.RAISED, Color.white, Color.blue);
Border border2 = BorderFactory.createBevelBorder(BevelBorder.RAISED,
new Color(154, 254, 211), new Color(108, 178, 148),
new Color(37, 60, 50), new Color(53, 87, 72));
DefaultTableModel dm = new DefaultTableModel();
Vector searchlist = new Vector();
Vector rows = new Vector();
Vector returnList;
Connectmagr objConnectmagr = new Connectmagr();
JFrame frame = new JFrame();
JLabel headlab = new JLabel();
JCalendarComboBox EndDateTxt;
JLabel HawbLab = new JLabel();
JTextField HawbTxt = new JTextField();
JLabel AgentLab = new JLabel();
JLabel StartDateLab = new JLabel();
JCalendarComboBox StartDateTxt;
JComboBox AgentLBox = new JComboBox();
JLabel EnddateLab = new JLabel();
JPanel ReviewJobsPane = new JPanel();
JButton SearchBtn = new JButton();
ButtonUI ui = new com.sun.java.swing.plaf.motif.MotifButtonUI();
ArrayList AgentList = new ArrayList();
JComboBox DocTypeLBox = new JComboBox();
JLabel doctypelab = new JLabel();
JPanel displayPanel = new JPanel();
ButtonGroup group1;
JRadioButton rb;
JTable table;
public ArrayList jobList = new ArrayList();
public AutoPopRollBack(JFrame frame, ArrayList agentArrayList) {
this.frame = frame;
this.AgentList = agentArrayList;
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
public void jbInit() throws Exception {
Calendar cal = Calendar.getInstance();
Locale loc = new Locale("");
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
EndDateTxt = new JCalendarComboBox(cal, loc, dateformat);
StartDateTxt = new JCalendarComboBox(cal, loc, dateformat);
HeaderLabe.setBackground(new Color(250, 233, 216));
HeaderLabe.setBounds(new Rectangle(0, 0, 830, 33));
this.setLayout(null);
this.setBackground(SystemColor.control);
headlab.setBackground(new Color(250, 233, 216));
headlab.setFont(new java.awt.Font("Verdana", 1, 12));
headlab.setForeground(Color.blue);
headlab.setHorizontalAlignment(SwingConstants.CENTER);
headlab.setText(" :: Auto Population Rollback");
headlab.setBounds(new Rectangle(39, 2, 247, 25));
EndDateTxt.setBounds(new Rectangle(474, 36, 116, 18));
EndDateTxt.setBackground(Color.white);
EndDateTxt.setFont(new java.awt.Font("Times New Roman", 1, 10));
EndDateTxt.setForeground(Color.blue);
EndDateTxt.setBorder(null);
HawbLab.setFont(new java.awt.Font("Dialog", 0, 13));
HawbLab.setForeground(Color.blue);
HawbLab.setHorizontalAlignment(SwingConstants.RIGHT);
HawbLab.setText("Job No/Airway Bill No:");
HawbLab.setBounds(new Rectangle(326, 14, 146, 18));
HawbTxt.setBounds(new Rectangle(474, 14, 125, 18));
HawbTxt.setText("");
HawbTxt.setFont(new java.awt.Font("Times New Roman", 1, 10));
HawbTxt.setForeground(Color.blue);
HawbTxt.setBorder(border1);
AgentLab.setFont(new java.awt.Font("Dialog", 0, 13));
AgentLab.setForeground(Color.blue);
AgentLab.setHorizontalAlignment(SwingConstants.RIGHT);
AgentLab.setText("<html>Agent:<font size=\'4\' color=\"#993333\">*</font></html>");
AgentLab.setBounds(new Rectangle(31, 14, 97, 18));
StartDateLab.setFont(new java.awt.Font("Dialog", 0, 13));
StartDateLab.setForeground(Color.blue);
StartDateLab.setHorizontalAlignment(SwingConstants.RIGHT);
StartDateLab.setText("Start Date:");
StartDateLab.setBounds(new Rectangle(23, 36, 105, 18));
StartDateTxt.setBounds(new Rectangle(129, 36, 116, 18));
StartDateTxt.setBackground(Color.white);
StartDateTxt.setFont(new java.awt.Font("Times New Roman", 1, 10));
StartDateTxt.setForeground(Color.blue);
StartDateTxt.setBorder(null);
AgentLBox.setBackground(Color.white);
AgentLBox.setFont(new java.awt.Font("Verdana", 0, 13));
AgentLBox.setForeground(Color.blue);
AgentLBox.setBounds(new Rectangle(129, 14, 178, 18));
AgentLBox.setFont(new java.awt.Font("Times New Roman", 1, 10));
EnddateLab.setFont(new java.awt.Font("Dialog", 0, 13));
EnddateLab.setForeground(Color.blue);
EnddateLab.setHorizontalAlignment(SwingConstants.RIGHT);
EnddateLab.setText("End Date:");
EnddateLab.setBounds(new Rectangle(391, 36, 81, 18));
ReviewJobsPane.setBackground(new Color(240, 233, 216));
ReviewJobsPane.setBorder(BorderFactory.createLineBorder(Color.black));
ReviewJobsPane.setBounds(new Rectangle(69, 47, 705, 96));
ReviewJobsPane.setLayout(null);
SearchBtn.setUI(ui);
SearchBtn.setCursor(cursor);
SearchBtn.setBackground(new Color(76, 125, 104));
SearchBtn.setBounds(new Rectangle(377, 153, 89, 19));
SearchBtn.setFont(new java.awt.Font("Tahoma", 1, 10));
SearchBtn.setForeground(Color.white);
SearchBtn.setBorder(border2);
SearchBtn.setOpaque(true);
SearchBtn.setFocusPainted(false);
SearchBtn.setText("Search");
SearchBtn.addActionListener(new AutoPopRollBack_SearchBtn_actionAdapter(this));
for (int i = 0; i < AgentList.size(); i++)
AgentLBox.addItem( (String) AgentList.get(i));
DocTypeLBox.setFont(new java.awt.Font("Verdana", 0, 13));
DocTypeLBox.setForeground(Color.blue);
DocTypeLBox.setMinimumSize(new Dimension(22, 19));
DocTypeLBox.setBounds(new Rectangle(129, 58, 179, 18));
DocTypeLBox.setFont(new java.awt.Font("Times New Roman", 1, 10));
DocTypeLBox.addItem("New Jobs");
DocTypeLBox.addItem("Draft jobs");
DocTypeLBox.addItem("Finished jobs");
doctypelab.setBounds(new Rectangle(7, 58, 121, 18));
doctypelab.setText("<html>Document Type:<font size=\'4\' color=\"#993333\">*</font></html>");
doctypelab.setHorizontalAlignment(SwingConstants.RIGHT);
doctypelab.setForeground(Color.blue);
doctypelab.setFont(new java.awt.Font("Dialog", 0, 13));
displayPanel.setBorder(BorderFactory.createLineBorder(Color.black));
displayPanel.setBounds(new Rectangle(69, 182, 705, 315));
this.add(headlab, null);
this.add(HeaderLabe, null);
this.add(ReviewJobsPane, null);
ReviewJobsPane.add(HawbLab, null);
ReviewJobsPane.add(AgentLab, null);
ReviewJobsPane.add(AgentLBox, null);
ReviewJobsPane.add(StartDateLab, null);
ReviewJobsPane.add(StartDateTxt, null);
ReviewJobsPane.add(HawbTxt, null);
ReviewJobsPane.add(EnddateLab, null);
ReviewJobsPane.add(EndDateTxt, null);
ReviewJobsPane.add(DocTypeLBox, null);
ReviewJobsPane.add(doctypelab, null);
this.add(SearchBtn, null);
this.add(displayPanel, null);
//this.add(scrollPaneView, null);
// scrollPaneView.getViewport().add(displayPanel, null);
this.setVisible(true);
void FieldEditable(boolean str) {
StartDateTxt.setEnabled(str);
EndDateTxt.setEnabled(str);
public static void main(String args[]) {
JFrame frame = new JFrame();
ArrayList agentlist = new ArrayList();
agentlist.add(0, "BF0651");
agentlist.add(1, "PF0010");
AutoPopRollBack objAutoPopRollBack = new AutoPopRollBack(frame, agentlist);
frame.getContentPane().add(objAutoPopRollBack);
frame.setBounds(new Rectangle(0, 0, 820, 593));
frame.setVisible(true);
void SearchBtn_actionPerformed(ActionEvent e) {
displayPanel.setVisible(false);
Vector data=new Vector();
rows.removeAllElements();
boolean flag = true;
String che = new EndStartDateCheck().crossCheck(StartDateTxt.getCalendar(), EndDateTxt.getCalendar());
try {
if(HawbTxt.getText().equalsIgnoreCase("")){
if (StartDateTxt._spinner.getText().equalsIgnoreCase("")) {
JOptionPane.showMessageDialog(this, "Please Select Start Date",
"Warning", JOptionPane.WARNING_MESSAGE);
flag = false;
else if (!che.equalsIgnoreCase("")) {
JOptionPane.showMessageDialog(frame, che, "Message Window", JOptionPane.INFORMATION_MESSAGE);
flag = false;
}else{
FieldEditable(true);
if (flag) {
try {
displayPanel.removeAll();
} catch (Exception ex) {
rows.removeAllElements();
data.removeAllElements();
SearchBtn.setEnabled(true);
searchlist.add(0, AgentLBox.getSelectedItem().toString().trim());
if (!HawbTxt.getText().trim().equalsIgnoreCase(""))
searchlist.add(1, HawbTxt.getText().toString().trim());
else
searchlist.add(1, "");
searchlist.add(2, new Integer(DocTypeLBox.getSelectedIndex() + 1));
String startDate = new ConvertDate().convertddMM_To_MMdd(StartDateTxt._spinner.getText());
String endDate = new ConvertDate().convertddMM_To_MMdd(EndDateTxt._spinner.getText());
Vector columns = new Vector();
columns.add(0, "");
columns.add(1, "JOB No");
columns.add(2, "Status");
columns.add(3, "Current Form Type");
columns.add(4, "New Form Type");
System.out.println("Before calling Data Base");
jobList = objConnectmagr.AutoRollBackSearch(searchlist, startDate, endDate, "AutoPopRollBack");
if (jobList.size() > 0) {
for (int i = 0; i < jobList.size(); i++) {
ArrayList temp = new ArrayList();
temp = (ArrayList) jobList.get(i);
Vector col = new Vector();
col.add(0, new Boolean(false));
col.add(1, temp.get(0).toString().trim());
col.add(2, temp.get(1).toString().trim());
col.add(3, temp.get(2).toString().trim());
Vector tempstr=new Vector();
String [] tem=temp.get(3).toString().trim().split("\\|");
tempstr.removeAllElements();
for(int k=0;k<tem.length;k++)
tempstr.add(k,tem[k]);
col.add(4, new JComboBox(tempstr));
data.add(col);
dm.setDataVector(data, columns);
table = new JTable(dm) {
public void tableChanged(TableModelEvent e) {
super.tableChanged(e);
public boolean isCellEditable(int rowIndex, int vColIndex) {
return true;
JScrollPane scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
table.setColumnSelectionAllowed(false);
table.setRowSelectionAllowed(false);
table.setCellSelectionEnabled(false);
table.setBackground(SystemColor.inactiveCaptionText);
table.setRowHeight(20);
JTableHeader head = table.getTableHeader();
head.setSize(850, 75);
table.setTableHeader(head);
table.getTableHeader().setFont(new Font("Verdana", Font.BOLD, 11));
table.getTableHeader().setBackground(new Color(130, 170, 150));
table.getTableHeader().setForeground(Color.BLUE);
table.getTableHeader().setReorderingAllowed(false);
table.getTableHeader().setResizingAllowed(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.setFont(new java.awt.Font("MS Sans Serif", 0, 13));
table.setForeground(new Color(125, 25, 0));
TableColumn col = table.getColumnModel().getColumn(0);
col.setMinWidth(75);
col.setMaxWidth(75);
TableColumn col1 = table.getColumnModel().getColumn(1);
col1.setMinWidth(150);
col1.setMaxWidth(150);
TableColumn col2 = table.getColumnModel().getColumn(2);
col2.setMinWidth(150);
col2.setMaxWidth(150);
TableColumn col3 = table.getColumnModel().getColumn(3);
col3.setMinWidth(150);
col3.setMaxWidth(150);
TableColumn col4 = table.getColumnModel().getColumn(4);
col4.setMinWidth(160);
col4.setMaxWidth(160);
TableColumn tc = table.getColumnModel().getColumn(0);
tc.setCellEditor(table.getDefaultEditor(Boolean.class));
tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc.setHeaderRenderer(new CheckBoxHeader(new MyItemListener()));
Vector tempstr=new Vector();
for(int j=0;j<jobList.size();j++){
ArrayList temlist=(ArrayList)jobList.get(j);
String [] tem=temlist.get(3).toString().trim().split("\\|");
tempstr.removeAllElements();
for(int k=0;k<tem.length;k++)
tempstr.add(k,tem[k]);
JComboBox portTypesCombo = new JComboBox(tempstr);
col4.setCellEditor(new DefaultCellEditor(portTypesCombo));
col4 = table.getColumnModel().getColumn(4);
col4.setCellEditor(new MyComboBoxEditor(tempstr));
// If the cell should appear like a combobox in its
// non-editing state, also set the combobox renderer
col4.setCellRenderer(new MyComboBoxRenderer(tempstr));
System.out.println(tempstr);
displayPanel.setLayout(new BorderLayout());
displayPanel.add(table.getTableHeader(), BorderLayout.PAGE_START);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
table.setEditingColumn(0);
int column = 0;
if (e.getClickCount() == 1) {
Point p = e.getPoint();
selectedRow = table.rowAtPoint(p);
column = table.columnAtPoint(p);
System.out.println(table.isCellEditable(selectedRow, column));
if (column != 0) {
selectedRow = -1;
returnList = new Vector();
returnList = (Vector) rows.get(selectedRow);
else if (column == 0) {
table.revalidate();
table.repaint();
scroll.getViewport().add(table);
displayPanel.add(scroll, BorderLayout.CENTER);
displayPanel.setVisible(true);
else {
JOptionPane.showMessageDialog(this, "No Data Available");
} catch (Exception e1) {
e1.printStackTrace();
class MyItemListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
Object source = e.getSource();
if (source instanceof AbstractButton == false)return;
boolean checked = e.getStateChange() == ItemEvent.SELECTED;
for (int x = 0, y = table.getRowCount(); x < y; x++) {
table.setValueAt(new Boolean(checked), x, 0);
class AutoPopRollBack_SearchBtn_actionAdapter implements java.awt.event.ActionListener {
AutoPopRollBack adaptee;
AutoPopRollBack_SearchBtn_actionAdapter(AutoPopRollBack adaptee) {
this.adaptee = adaptee;
public void actionPerformed(ActionEvent e) {
adaptee.SearchBtn_actionPerformed(e);
class RadioButtonRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (value == null)return null;
return (Component) value;
class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
private JRadioButton button;
public RadioButtonEditor(JCheckBox checkBox) {
super(checkBox);
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row,
int column) {
if (value == null)return null;
button = (JRadioButton) value;
button.addItemListener(this);
return (Component) value;
public Object getCellEditorValue() {
button.removeItemListener(this);
return button;
public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();
class CheckCellRenderer extends JCheckBox implements TableCellRenderer {
protected static Border m_noFocusBorder;
public CheckCellRenderer() {
super();
m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
setOpaque(true);
setBorder(m_noFocusBorder);
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (value instanceof Boolean) {
Boolean b = (Boolean) value;
setSelected(b.booleanValue());
setBackground(isSelected && !hasFocus ?
table.getSelectionBackground() : table.getBackground());
setForeground(isSelected && !hasFocus ?
table.getSelectionForeground() : table.getForeground());
setFont(table.getFont());
setBorder(hasFocus ? UIManager.getBorder(
"Table.focusCellHighlightBorder") : m_noFocusBorder);
return this;
class CheckBoxHeader extends JCheckBox implements TableCellRenderer, MouseListener {
protected CheckBoxHeader rendererComponent;
protected int column;
protected boolean mousePressed = false;
public CheckBoxHeader(ItemListener itemListener) {
rendererComponent = this;
rendererComponent.addItemListener(itemListener);
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (table != null) {
JTableHeader header = table.getTableHeader();
if (header != null) {
rendererComponent.setForeground(header.getForeground());
rendererComponent.setBackground(header.getBackground());
rendererComponent.setFont(new java.awt.Font("Verdana", 1, 10));
header.addMouseListener(rendererComponent);
setColumn(column);
rendererComponent.setText("Select All");
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return rendererComponent;
protected void setColumn(int column) {
this.column = column;
public int getColumn() {
return column;
protected void handleClickEvent(MouseEvent e) {
if (mousePressed) {
mousePressed = false;
JTableHeader header = (JTableHeader) (e.getSource());
JTable tableView = header.getTable();
TableColumnModel columnModel = tableView.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
int column = tableView.convertColumnIndexToModel(viewColumn);
if (viewColumn == this.column && e.getClickCount() == 1 && column != -1) {
doClick();
public void mouseClicked(MouseEvent e) {
handleClickEvent(e);
( (JTableHeader) e.getSource()).repaint();
public void mousePressed(MouseEvent e) {
mousePressed = true;
public void mouseReleased(MouseEvent e) {
public void mouseEntered(MouseEvent e) {
public void mouseExited(MouseEvent e) {
class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
public MyComboBoxRenderer(Vector items) {
super(items);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
else {
setForeground(table.getForeground());
setBackground(table.getBackground());
// Select the current value
setSelectedItem(value);
return this;
class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(Vector items) {
super(new JComboBox(items));
and Bringing data from data base by using this method
if (i == 0) sqlString = "SELECT * FROM FLIGHTSEARCH WHERE AGENT_CODE='" + agentCode + "' and ISSUEDATE BETWEEN '" + startDate + "' and '" + endDate + "'";
else sqlString = "SELECT * FROM FLIGHTSEARCH WHERE AGENT_CODE='" + agentCode + "' and JOB_NO='" + JobNo + "%'";
st = con.createStatement();
System.out.println("---new jobs search-->" + sqlString);
rs = st.executeQuery(sqlString);
while (rs.next()) {
retVector = new ArrayList();
retVector.add(0, rs.getString("JOBNO"));
retVector.add(1, "New Job");
retVector.add(2, rs.getString("DOC_TYPE"));
String temp="";
if(retVector.get(2).toString().trim().equalsIgnoreCase("K1")){
temp="K8I|K8T";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K2")){
temp="K8E";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K8I")){
// temp="K1|K8T";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K8T")){
temp="K1|K8I";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K8E")){
temp="K2";
retVector.add(3,temp);
retVector.add(3, rs.getString("AGENT_CODE"));
retVectorlist.add(retVector);
i am sending data To ComboBox like this
if(retVector.get(2).toString().trim().equalsIgnoreCase("K1")){
K8I and K8T
if K2 adding k8E and for other types as mentioned above
But for ComboBoxes it is showing same Items not changing
Please any body can help to me
Thanks and Regards
RavichandraIf you want further help post a Short, Self Contained, Compilable and Executable, Example Program ([url http://homepage1.nifty.com/algafield/sscce.html]SSCCE) that demonstrates the problem.
And don't forget to use [url http://forum.java.sun.com/help.jspa?sec=formatting]code formatting when posting code. -
hi, i do a program to create "business case table", but i've a problem in the 2nd part of the table, because in my 2nd table i have a JComboBox with image, when i click the combobox the images are show, but when select some figure the cell don�t keep the image, only keep the text.
Anyone can help me???
Here is my principal class that create the principal screen and tables:
/* Poseidon */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;
* Summary description for Poseidon
*2052102
public class Poseidon extends JFrame
// Variables declaration
private JTabbedPane jTabbedPane1;
private JPanel contentPane, paineltabela, painelgrafo, painelvariavel, paineltarefa;
private JTable tabelavariavel,tabelatarefa, tabelateste;
private JScrollPane scrollvariavel, scrolltarefa;
private int totallinhas, alt, al, linhastarefa,cont, linhas, tamanholinhas,
controlalinhas, index, contastring;
private String variavel;
private JComboBox combobox;
JMenuItem sair, abrir, guardar, miadtarefa, miadvariavel;
JTable [] tabelasvar = new JTable[30];
JFrame w;
// End of variables declaration
public Poseidon()
super("Poseidon");
initializeComponent();
this.setVisible(true);
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always regenerated
* by the Windows Form Designer. Otherwise, retrieving design might not work properly.
* Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
* to retrieve your design properly in future, before revising this method.
private void initializeComponent()
JMenuBar barra = new JMenuBar();
setJMenuBar(barra);
TratBarra trat = new TratBarra();
tabelavariavel = new JTable();
tabelatarefa = new JTable();
tabelavariavel.getTableHeader().setReorderingAllowed(false);
tabelavariavel.setModel(new DefaultTableModel());
tabelavariavel.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
tabelavariavel.setBackground(Color.cyan);
tabelatarefa.getTableHeader().setReorderingAllowed(false);
tabelatarefa.setModel(new DefaultTableModel());
tabelatarefa.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabelatarefa.setBackground(Color.white);
CaixaCombinacao combobox = new CaixaCombinacao();
DefaultCellEditor editor = new DefaultCellEditor(combobox);
tabelatarefa.setDefaultEditor(Object.class, editor);
painelvariavel = new JPanel();
painelvariavel.setLayout(new GridLayout(1, 0));
painelvariavel.setBorder(new TitledBorder("Variaveis"));
painelvariavel.setBounds(15, 35, 490, 650);
painelvariavel.setVisible(false);
this.add(painelvariavel);
scrollvariavel = new JScrollPane();
scrollvariavel.setViewportView(tabelavariavel);
painelvariavel.add(scrollvariavel);
paineltarefa = new JPanel();
paineltarefa.setLayout(new GridLayout(1,0));
paineltarefa.setBorder(new TitledBorder("Tarefas"));
paineltarefa.setBounds(506, 35, 490,650);
paineltarefa.setVisible(false);
this.add(paineltarefa);
scrolltarefa = new JScrollPane();
scrolltarefa.setViewportView(tabelatarefa);
paineltarefa.add(scrolltarefa);
tamanholinhas = 1;
linhas=1;
cont=0;
JMenu arquivo = new JMenu("Arquivo");
JMenu mtabela = new JMenu("Tabela");
arquivo.setMnemonic(KeyEvent.VK_A);
mtabela.setMnemonic(KeyEvent.VK_T);
miadvariavel = new JMenuItem("Adicionar Variavel");
miadtarefa = new JMenuItem("Adicionar Tarefa");
abrir = new JMenuItem("Abrir");
guardar = new JMenuItem("Guardar");
sair = new JMenuItem("Sair");
sair.addActionListener(trat);
miadvariavel.addActionListener(trat);
miadtarefa.addActionListener(trat);
mtabela.add(miadvariavel);
miadvariavel.setMnemonic(KeyEvent.VK_V);
mtabela.add(miadtarefa);
miadtarefa.setMnemonic(KeyEvent.VK_F);
arquivo.add(abrir);
abrir.setMnemonic(KeyEvent.VK_B);
arquivo.add(guardar);
guardar.setMnemonic(KeyEvent.VK_G);
arquivo.addSeparator();
arquivo.add(sair);
sair.setMnemonic(KeyEvent.VK_S);
barra.add(arquivo);
barra.add(mtabela);
jTabbedPane1 = new JTabbedPane();
contentPane = (JPanel)this.getContentPane();
paineltabela = new JPanel();
painelgrafo = new JPanel();
// jTabbedPane1
jTabbedPane1.addTab("Tabela", paineltabela);
jTabbedPane1.addTab("Grafo", painelgrafo);
jTabbedPane1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e)
painelvariavel.setVisible(false);
// contentPane
contentPane.setLayout(null);
addComponent(contentPane, jTabbedPane1, 11,10,990,690);
// paineltabela
paineltabela.setLayout(null);
// painelgrafo
painelgrafo.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
// Poseidon
this.setTitle("UMa Poseidon");
this.setLocation(new Point(2, 1));
this.setSize(new Dimension(558, 441));
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setExtendedState(MAXIMIZED_BOTH);
/** Add Component Without a Layout Manager (Absolute Positioning) */
private void addComponent(Container container,Component c,int x,int y,int width,int height)
c.setBounds(x,y,width,height);
container.add(c);
// TODO: Add any appropriate code in the following Event Handling Methods
private void jTabbedPane1_stateChanged(ChangeEvent e)
System.out.println("\njTabbedPane1_stateChanged(ChangeEvent e) called.");
// TODO: Add any handling code here
// TODO: Add any method code to meet your needs in the following area
private class TratBarra implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource() == sair){
int op = JOptionPane.showConfirmDialog(null, "Deseja mesmo fechar o aplicativo?","Sair", JOptionPane.YES_NO_OPTION);
if(op == JOptionPane.YES_OPTION){
System.exit(0);
if(e.getSource() == miadvariavel){
final JFrame w = new JFrame();
new AdVariavel(w);
if(e.getSource() == miadtarefa){
final JFrame w = new JFrame();
new AdTarefa(w);
//============================= Testing ================================//
//= =//
//= The following main method is just for testing this class you built.=//
//= After testing,you may simply delete it. =//
//======================================================================//
public static void main(String[] args)
Spash sp = new Spash(3000);
sp.mostraTela();
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
catch (Exception ex)
System.out.println("Failed loading L&F: ");
System.out.println(ex);
new Poseidon();
//= End of Testing =
private class AdVariavel extends JDialog
// Variables declaration
private JLabel jLabel1;
private JTextField jTextField1;
private JButton varOK;
private JButton varCancel;
private JPanel contentPane;
private JTextField jTextField2;
private JList listadominio;
private JScrollPane jScrollPane1;
private JButton varAdiciona;
private JButton varRemove;
private JPanel jPanel1;
private DefaultListModel modelo1;
// End of variables declaration
public AdVariavel(Frame w)
super(w);
initializeComponent();
// TODO: Add any constructor code after initializeComponent call
this.setVisible(true);
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always regenerated
* by the Windows Form Designer. Otherwise, retrieving design might not work properly.
* Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
* to retrieve your design properly in future, before revising this method.
private void initializeComponent()
modelo1 = new DefaultListModel();
jLabel1 = new JLabel();
jTextField1 = new JTextField();
varOK = new JButton();
varCancel = new JButton();
contentPane = (JPanel)this.getContentPane();
jTextField2 = new JTextField();
listadominio = new JList(modelo1);
jScrollPane1 = new JScrollPane();
varAdiciona = new JButton();
varRemove = new JButton();
jPanel1 = new JPanel();
// jLabel1
jLabel1.setText("Nome da vari�vel:");
// jTextField1
jTextField1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
jTextField1_actionPerformed(e);
// varOK
varOK.setText("OK");
varOK.setMnemonic(KeyEvent.VK_O);
varOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
varOK_actionPerformed(e);
// varCancel
varCancel.setText("Cancelar");
varCancel.setMnemonic(KeyEvent.VK_C);
varCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
varCancel_actionPerformed(e);
// contentPane
contentPane.setLayout(null);
addComponent(contentPane, jLabel1, 12,12,105,18);
addComponent(contentPane, jTextField1, 118,10,137,22);
addComponent(contentPane, varOK, 170,227,83,28);
addComponent(contentPane, varCancel, 257,227,85,28);
addComponent(contentPane, jPanel1, 12,42,332,180);
// jTextField2
jTextField2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
jTextField2_actionPerformed(e);
// listadominio
listadominio.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e)
listadominio_valueChanged(e);
// jScrollPane1
jScrollPane1.setViewportView(listadominio);
// varAdiciona
varAdiciona.setText("Adicionar");
varAdiciona.setMnemonic(KeyEvent.VK_A);
varAdiciona.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
varAdiciona_actionPerformed(e);
// varRemove
varRemove.setText("Remover");
varRemove.setMnemonic(KeyEvent.VK_R);
varRemove.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
varRemove_actionPerformed(e);
// jPanel1
jPanel1.setLayout(null);
jPanel1.setBorder(new TitledBorder("Dominio:"));
addComponent(jPanel1, jTextField2, 17,22,130,22);
addComponent(jPanel1, jScrollPane1, 165,21,154,144);
addComponent(jPanel1, varAdiciona, 56,50,89,28);
addComponent(jPanel1, varRemove, 57,84,88,28);
// AdTarefas
this.setTitle("Adicionar Variavel");
this.setLocation(new Point(1, 0));
this.setSize(new Dimension(367, 296));
this.setLocationRelativeTo(null);
this.setResizable(false);
/** Add Component Without a Layout Manager (Absolute Positioning) */
private void addComponent(Container container,Component c,int x,int y,int width,int height)
c.setBounds(x,y,width,height);
container.add(c);
// TODO: Add any appropriate code in the following Event Handling Methods
private void jTextField1_actionPerformed(ActionEvent e)
System.out.println("\njTextField1_actionPerformed(ActionEvent e) called.");
// TODO: Add any handling code here
private void varOK_actionPerformed(ActionEvent e)
System.out.println("\nvarOK_actionPerformed(ActionEvent e) called.");
if (jTextField1 == null){
return;
if (jTextField1.getText().length()<1){
JOptionPane.showMessageDialog(null,"N�o introduziu nenhuma variavel","AVISO", 1 );
jTextField1.requestFocus();
return;
else {
if (modelo1.getSize() == 0){
JOptionPane.showMessageDialog(null,"N�o introduziu nenhum dominio","AVISO", 1 );
return;
else{
painelvariavel.add(scrollvariavel);
index = 0;
variavel = jTextField1.getText();
contastring = variavel.length();
System.out.println(contastring);
DefaultTableModel dtm = (DefaultTableModel)tabelavariavel.getModel();
tabelavariavel.getTableHeader().setBackground(Color.yellow);
dtm.addColumn(variavel, new Object[]{});
al = modelo1.getSize();
totallinhas = al;
for(int i = 0;i < modelo1.getSize();i++){
listadominio.setSelectedIndex(index) ;
Object dominio = listadominio.getSelectedValue();
dtm.addRow(new Object[]{dominio});
index ++;
tabelasvar[cont] = tabelavariavel;
cont++;
System.out.println(cont);
for(int i=0;i<cont;i++){
tabelateste = tabelasvar;
linhas = tabelateste.getRowCount();
if (linhas >= tamanholinhas){
tamanholinhas = linhas;
for (int i=0;i<cont;i++){
tabelateste = tabelasvar[i];
System.out.println(linhas);
linhas = tabelateste.getRowCount();
tabelateste.setRowHeight((tamanholinhas/linhas)*20);
tabelasvar[i] = tabelateste;
System.out.println(tabelateste);
tabelavariavel = new JTable();
scrollvariavel = new JScrollPane();
painelvariavel.add(tabelavariavel);
tabelavariavel.setBackground(Color.cyan);
tabelavariavel.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
scrollvariavel.setViewportView(tabelavariavel);
painelvariavel.setVisible(true);
tabelavariavel.getTableHeader().setReorderingAllowed(false);
this.setVisible(false);
miadtarefa.setEnabled(true);
miadvariavel.setEnabled(true);
DefaultTableModel dtm = (DefaultTableModel)tabelatarefa.getModel();
tabelatarefa.getTableHeader().setBackground(Color.yellow);
controlalinhas = tamanholinhas - linhastarefa;
for(int i = 0;i < controlalinhas;i++){
dtm.addRow(new Object[]{});
linhastarefa++;
tabelatarefa.setRowHeight((tamanholinhas/linhas)*20);
// TODO: Add any handling code here
private void varCancel_actionPerformed(ActionEvent e)
System.out.println("\nvarCancel_actionPerformed(ActionEvent e) called.");
this.setVisible(false);
private void jTextField2_actionPerformed(ActionEvent e)
System.out.println("\njTextField2_actionPerformed(ActionEvent e) called.");
// TODO: Add any handling code here
private void listadominio_valueChanged(ListSelectionEvent e)
System.out.println("\nlistadominio_valueChanged(ListSelectionEvent e) called.");
if(!e.getValueIsAdjusting())
Object o = listadominio.getSelectedValue();
System.out.println(">>" + ((o==null)? "null" : o.toString()) + " is selected.");
// TODO: Add any handling code here for the particular object being selected
private void varAdiciona_actionPerformed(ActionEvent e)
System.out.println("\nvarAdiciona_actionPerformed(ActionEvent e) called.");
if(jTextField2.getText().length()>=1){
modelo1.addElement(jTextField2.getText());
jTextField2.setText("");
jTextField2.requestFocus();
private void varRemove_actionPerformed(ActionEvent e)
System.out.println("\nvarRemove_actionPerformed(ActionEvent e) called.");
int index = listadominio.getSelectedIndex();
modelo1.remove(index);
// TODO: Add any method code to meet your needs in the following area
private class AdTarefa extends JDialog
// Variables declaration
private JLabel jLabel1;
private JTextField jTextField1;
private JButton tarOK;
private JButton tarCancel;
private JPanel contentPane;
private JPanel jPanel1;
// End of variables declaration
public AdTarefa(Frame w)
super(w);
initializeComponent();
// TODO: Add any constructor code after initializeComponent call
this.setVisible(true);
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always regenerated
* by the Windows Form Designer. Otherwise, retrieving design might not work properly.
* Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
* to retrieve your design properly in future, before revising this method.
private void initializeComponent()
jLabel1 = new JLabel();
jTextField1 = new JTextField();
tarOK = new JButton();
tarCancel = new JButton();
contentPane = (JPanel)this.getContentPane();
// jLabel1
jLabel1.setText("Nome da tarefa:");
// jTextField1
jTextField1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
jTextField1_actionPerformed(e);
// tarOK
tarOK.setText("OK");
tarOK.setMnemonic(KeyEvent.VK_O);
tarOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
tarOK_actionPerformed(e);
// tarCancel
tarCancel.setText("Cancelar");
tarCancel.setMnemonic(KeyEvent.VK_C);
tarCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
tarCancel_actionPerformed(e);
// contentPane
contentPane.setLayout(null);
addComponent(contentPane, jLabel1, 12,12,105,18);
addComponent(contentPane, jTextField1, 118,10,120,22);
addComponent(contentPane, tarOK, 10,50,83,28);
addComponent(contentPane, tarCancel, 153,50,85,28);
// AdTarefas
this.setTitle("Adicionar Tarefa");
this.setLocation(new Point(1, 0));
this.setSize(new Dimension(250, 120));
this.setLocationRelativeTo(null);
this.setResizable(false);
/** Add Component Without a Layout Manager (Absolute Positioning) */
private void addComponent(Container container,Component c,int x,int y,int width,int height)
c.setBounds(x,y,width,height);
container.add(c);
// TODO: Add any appropriate code in the following Event Handling Methods
private void jTextField1_actionPerformed(ActionEvent e)
System.out.println("\njTextField1_actionPerformed(ActionEvent e) called.");
// TODO: Add any handling code here
private void tarOK_actionPerformed(ActionEvent e)
System.out.println("\ntarOK_actionPerformed(ActionEvent e) called.");
if (jTextField1 == null){
return;
if (jTextField1.getText().length()<1){
JOptionPane.showMessageDialog(null,"N�o introduziu nenhuma tarefa","AVISO", 1 );
jTextField1.requestFocus();
return;
else{
String variavel = jTextField1.getText();
DefaultTableModel dtm = (DefaultTableModel)tabelatarefa.getModel();
dtm.addColumn(variavel,new Object[]{});
controlalinhas = tamanholinhas - linhastarefa;
for(int i = 0;i < controlalinhas;i++){
dtm.addRow(new Object[]{});
linhastarefa++;
for(int i=0; i < tabelatarefa.getColumnCount(); i++){
tabelatarefa.getColumnModel().getColumn(i).setPreferredWidth(100);
tabelatarefa.getColumnModel().getColumn(i).setResizable(false);
tabelatarefa.getTableHeader().setBackground(Color.yellow);
tabelatarefa.setRowHeight((tamanholinhas/linhas)*20);
paineltarefa.setVisible(true);
tabelatarefa.getTableHeader().setReorderingAllowed(true);
this.setVisible(false);
miadtarefa.setEnabled(true);
miadvariavel.setEnabled(true);
// TODO: Add any handling code here
private void tarCancel_actionPerformed(ActionEvent e)
System.out.println("\ntarCancel_actionPerformed(ActionEvent e) called.");
this.setVisible(false);
now the code to create the JComboBox is here:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CaixaCombinacao extends JComboBox{
ImageIcon[] imagens;
String[] op = {"x", "check"};
public CaixaCombinacao(){
imagens = new ImageIcon[op.length];
Integer[] intArray = new Integer[op.length];
for (int i = 0; i < op.length; i++) {
intArray[i] = new Integer(i);
imagens[i] = createImageIcon("imagens/" + op[i] + ".gif");
this.addItem(imagens);
if (imagens[i] != null) {
imagens[i].setDescription(op[i]);
JComboBox lista = new JComboBox(intArray);
ComboBoxRenderer renderer= new ComboBoxRenderer();
lista.setRenderer(renderer);
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = CaixaCombinacao.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
return null;
class ComboBoxRenderer extends JLabel
implements ListCellRenderer {
public ComboBoxRenderer() {
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
ImageIcon icon = imagens[selectedIndex];
String opc = op[selectedIndex];
setIcon(icon);
return this;I'm sure 90% of the code posted here has nothing to do with displaying images in a JTable.
Here is an example that shows how to display an icon in a table:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableIcon extends JFrame
public TableIcon()
String[] columnNames = {"Picture", "Description"};
Object[][] data =
{new ImageIcon("copy16.gif"), "Copy"},
{new ImageIcon("add16.gif"), "Add"},
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable( model )
// Returning the Class of each column will allow different
// renderers to be used based on Class
public Class getColumnClass(int column)
return getValueAt(0, column).getClass();
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
public static void main(String[] args)
TableIcon frame = new TableIcon();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}If this doesn't help then post a similiar demo program that shows the problems you are having, not your entire application. -
JComboBox Cell Render selection problem
.......It only changes the color of the triangle for the drop down. It does not change the color of what is selected. There is just a gray selection background
<code>
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.basic.*;
public class ComboBoxColor extends JFrame
public ComboBoxColor()
Object[] items = { Color.red, Color.green, Color.blue };
JComboBox comboBox = new JComboBox( items );
comboBox.setRenderer( new ColorRenderer( comboBox) );
getContentPane().add( comboBox, BorderLayout.NORTH );
public static void main(String[] args)
ComboBoxColor frame = new ComboBoxColor();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
class ColorRenderer extends BasicComboBoxRenderer
JComboBox comboBox;
Border border;
public ColorRenderer(JComboBox comboBox)
this.comboBox = comboBox;
border = new LineBorder( Color.WHITE );
//setOpaque(true);
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setText("");
setBackground( (Color)value );
if (isSelected)
setBorder( border );
else
setBorder( null );
if (index == -1)
System.out.println((Color)value);
comboBox.setBackground((Color)value);
if((Color)value==Color.RED){
System.out.println("REd");
comboBox.setBackground(Color.RED);
else if((Color)value==Color.GREEN){
System.out.println("Green");
comboBox.setBackground(Color.GREEN);
else{
System.out.println("Blue");
comboBox.setBackground(Color.BLUE);
return this;
</code>import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.basic.*;
public class ComboBoxColor extends JFrame
public ComboBoxColor()
Object[] items = { Color.red, Color.green, Color.blue };
JComboBox comboBox = new JComboBox( items );
comboBox.setRenderer( new ColorRenderer( comboBox) );
getContentPane().add( comboBox, BorderLayout.NORTH );
public static void main(String[] args)
ComboBoxColor frame = new ComboBoxColor();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
class ColorRenderer extends BasicComboBoxRenderer
JComboBox comboBox;
Border border;
public ColorRenderer(JComboBox comboBox)
this.comboBox = comboBox;
border = new LineBorder( Color.WHITE );
//setOpaque(true);
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setText("");
setBackground( (Color)value );
if (isSelected)
setBorder( border );
else
setBorder( null );
if (index == -1)
System.out.println((Color)value);
comboBox.setBackground((Color)value);
if((Color)value==Color.RED){
System.out.println("REd");
comboBox.setBackground(Color.RED);
else if((Color)value==Color.GREEN){
System.out.println("Green");
comboBox.setBackground(Color.GREEN);
else{
System.out.println("Blue");
comboBox.setBackground(Color.BLUE);
return this;
} -
Update Jcombobox 's label in render
hi ,everybody, i have a problem about combobox, any body can help me!
thank you!
I want to have a combobox with checkbox as item, I rewrite a render writen by ice, because the combobox has three state, when I click diferent checkbox in this combobox , the label of combobox will update rightly, but if I click one checkbox to change the checkbox state ,the label will no update , it seem that when I click one checkbox many times .the menthod
getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus)
will no update label
my code :
mainclass:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.plaf.basic.BasicComboBoxEditor;
public class mainclass {
public static void main(String[] args) {
final testbox myComboBox = new testbox();
myComboBox.addItem("SelectAll");
myComboBox.addItem("ClearAll");
myComboBox.addItem("GrayedAll");
for(int i = 0; i < 5; i++) {
myComboBox.addItem("Item " + i);
JFrame frame = new JFrame("My ComboBox");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(150, 60);
frame.setLocation(300, 300);
//frame.setJMenuBar( menubar );
JPanel panel=new JPanel();
panel.setLayout(new BorderLayout());
panel.add(myComboBox,BorderLayout.NORTH);
frame.getContentPane().add(panel);
frame.setVisible(true);
final IconedCellRendererField renderer = IconedCellRendererField.getCheckBoxRendererInstance();
myComboBox.setRenderer(renderer);
myComboBox.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
if(myComboBox.getSelectedItem().toString().equals("SelectAll")){
renderer.selectAll(true);
if(myComboBox.getSelectedItem().toString().equals("ClearAll")){
renderer.clearAll(true);
if(myComboBox.getSelectedItem().toString().equals("GrayedAll")){
renderer.grayedAll(true);
}renderer:
import java.awt.*;
import java.awt.event.*;
//import java.io.*;
//import java.net.*;
import java.util.*;
import javax.swing.*;
//import javax.swing.event.*;
import javax.swing.border.*;
//import javax.swing.table.*;
public class IconedCellRendererField extends DefaultListCellRenderer implements MouseListener {
public Icon icon, selIcon;
Icon[] icons = null;
public boolean useIconBackground = true, useIndexSensitiveIcons = false,
useCheckBoxAsIcon = false, useLinkState = false;
Dimension labelDim = null;
public JLabel iconLabel;
public JCheckBox box = null;
public JPanel noback;
public SelectionStateHandler selStateHandler = null;
private JList theList = null;
public boolean[] selState = null, enableState = null;
int offset = 5;
Rectangle rect = null;
int currentLinkRow = -1;
boolean isOnRow = false, paintDivider = false;
private Icon dividerImage = null;
private Color linkColor = Color.blue, hoverColor = Color.red, selectedLinkColor = Color.green;
/* Initialises the renderer with one icon that is displayed without the
* cell background.
public IconedCellRendererField(Icon icon) {
this(icon,false);
/* Initialises the renderer with two icons that provide a switch capability
* when a row is selected/deselected
public IconedCellRendererField(Icon icon, Icon selIcon) {
this.icon = icon;
this.selIcon = selIcon;
//addMouseListener(this);
/* Initialises the renderer with two icons that provide a switch capability
* when a row is selected/deselected. The boolean argument enables the icon
* to either use the renderer background or appear transparent.
public IconedCellRendererField(Icon icon, Icon selIcon, boolean useIconBackground) {
this(icon, selIcon);
setIconHasBackground(useIconBackground);
createNoBackgroundPanel();
/* Initialises the renderer with a single no siwthing icon. The boolean
* argument enables the icon to either use the renderer background
* or appear transparent.
public IconedCellRendererField(Icon icon, boolean useIconBackground) {
this(icon, icon, useIconBackground);
/* Initialises the renderer to load two icons from the provided image locations.
* This enables icon switching on selection.
public IconedCellRendererField(String iconLoc, String selIconLoc) {
icon = new ImageIcon(iconLoc);
selIcon = new ImageIcon(selIconLoc);
//addMouseListener(this);
/* Initialises the renderer to load a single icon from the provided image location.
* The icon can either have the renderer background or not based on the
* boolean property.
public IconedCellRendererField(String iconLoc, boolean iconBackground) {
this(iconLoc, iconLoc, iconBackground);
/* Initialises the renderer to load two icons from the provided image locations.
* This enables icon switching on selection. The icon can either have the renderer
* background or not based on the boolean property.
public IconedCellRendererField(String iconLoc, String selIconLoc, boolean iconBackground) {
this(iconLoc, selIconLoc);
setIconHasBackground(iconBackground);
createNoBackgroundPanel();
/* Initialises the renderer to load a single icon from the provided image location.
public IconedCellRendererField(String iconLoc) {
this(iconLoc, true);
/* Initialises the renderer with an array of image icons that are repeated for
* each row in the list.
public IconedCellRendererField(Icon[] icons, boolean useIconBackground) {
this(icons[0], icons[0], useIconBackground);
public void createNoBackgroundPanel() {
iconLabel = new JLabel((Icon)null, JLabel.CENTER);
if(labelDim != null) { iconLabel.setPreferredSize(labelDim); }
iconLabel.setBorder( new EmptyBorder(1,5,1,5) );
noback = new JPanel( new BorderLayout() ) {
* Overridden for performance reasons.
* See the <a href="#override">Implementation Note</a>
* for more information.
//public void validate() {}
// public void invalidate() {}
public void repaint() {}
//public void revalidate() {}
public void repaint(long tm, int x, int y, int width, int height) {}
public void repaint(Rectangle r) {}
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
// Strings get interned...
if (propertyName == "text"
|| ((propertyName == "font" || propertyName == "foreground")
&& oldValue != newValue)) {
super.firePropertyChange(propertyName, oldValue, newValue);
public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {}
public void firePropertyChange(String propertyName, char oldValue, char newValue) {}
public void firePropertyChange(String propertyName, short oldValue, short newValue) {}
public void firePropertyChange(String propertyName, int oldValue, int newValue) {}
public void firePropertyChange(String propertyName, long oldValue, long newValue) {}
public void firePropertyChange(String propertyName, float oldValue, float newValue) {}
public void firePropertyChange(String propertyName, double oldValue, double newValue) {}
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
if(useCheckBoxAsIcon()) {
box = new JCheckBox();
//box.addMouseListener(this);
box.setOpaque(false);
noback.add( box, BorderLayout.WEST );
//noback.addMouseListener(this);
rect = box.getBounds();
//list.addMouseListener(this);
} else {
noback.add( iconLabel, BorderLayout.WEST );
noback.add( this, BorderLayout.CENTER );
noback.setBorder( new EmptyBorder(1,1,1,1) );
noback.setOpaque(false);
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
System.out.println(value+"+"+index+"+"+isSelected+"+"+cellHasFocus);
if(theList == null || theList != list) {
theList = list;
if(useLinkState) {
attachLinkSimulationListener();
setOpaque(true);
setText( value == null ? "" : value.toString());
if(useIndexSensitiveIcons) {
icon = getIcon(index);
if(useIconBackground)
setIcon(icon);
setFont( list.getFont() );
setToolTipText(value.toString() );
if(list.isEnabled())
setEnabled( isEnabled(index) );
else
setEnabled( list.isEnabled() );
if(isSelected && isEnabled(index) ) {
setForeground( Color.black );
setBackground( new Color(223, 235, 245) );
if(useIndexSensitiveIcons) {
selIcon = getIcon(index);
if(useIconBackground)
setIcon(selIcon);
} else {
setForeground(Color.black);
setBackground(Color.white);
setBorder(null);
if(cellHasFocus) {
setBorder( new CompoundBorder( new LineBorder( new Color(150, 150, 220) ),
new EmptyBorder(2,2,2,2) ) );
} else {
setBorder( new EmptyBorder(2,2,2,2));
if(useLinkState) {
if(currentLinkRow == index) {
setText("<html><u>" + value.toString()+"</u></html>" );
setForeground( getHoverLinkColor() );
} else {
setForeground( getLinkColor() );
if(isSelected) {
setForeground( getSelectedLinkColor() );
setBackground(Color.white);
setBorder( new EmptyBorder(1,1,1,1) );
if( shdPaintDivider() ) {
Border border = null;
if(dividerImage != null) {
border = new MatteBorder(0,0,1,0, dividerImage);
} else {
border = new MatteBorder(0,0,1,0, getLinkColor() );
if(index < theList.getModel().getSize() - 1 ) {
setBorder( new CompoundBorder(getBorder(),border) );
} else {
setBorder( new EmptyBorder(1,1,1,1) );
if(useIconBackground == false) {
if(isSelected)
iconLabel.setIcon(selIcon);
else
iconLabel.setIcon(icon);
if(useCheckBoxAsIcon()) {
if(selState == null) {
updateSelectionStateTrackers(list);
if(selStateHandler == null) {
list.addMouseListener( selStateHandler = new SelectionStateHandler(list) );
try {
box.setSelected( selState[index] );
} catch(Exception e) {}
if( shdPaintDivider() ) {
//if(index < theList.getModel().getSize() - 1 ) {
noback.setBorder( getBorder() );
setBorder( new EmptyBorder(1,1,1,1) );
//} else {
// noback.get
// this should cause a JComboBox to paint the Label instead of the
// check box + label combination
if(index == -1) {
Vector<Object> v=new Vector<Object>();
v=getSelectedObjects();
String val=generateString();
JLabel label=new JLabel(val);
if(iconLabel.getIcon() != null) {
label.setIcon( iconLabel.getIcon() );
System.out.println("label");
return label;
return noback;
return this;
public String generateString()
String val = "";
if(selState[0]==true&&selState[1]==false&&selState[2]==false){
for(int i = 3; i < theList.getModel().getSize(); i++) {
String curString=theList.getModel().getElementAt(i).toString();
if(val.length()==0){
val=val+curString+"-1";
} else {
val=val+"&"+curString+"-1";
//clear all
if(selState[1]==true&&selState[0]==false&&selState[2]==false ){
for(int i = 3; i < theList.getModel().getSize(); i++) {
String curString=theList.getModel().getElementAt(i).toString();
if(val.length()==0){
val=val+curString+"-0";
} else {
val=val+"&"+curString+"-0";
//grayedall
if(selState[2]==true&&selState[0]==false&&selState[1]==false ){
val="";
if(selState[0]==false&&selState[1]==false&&selState[2]==false ){
for(int i = 3; i < theList.getModel().getSize(); i++) {
String curString=theList.getModel().getElementAt(i).toString();
if(selState==true&&enableState[i]==false){
continue;
if(selState[i]==true&&enableState[i]==true){
if(val.length()==0){
val=val+curString+"-1";
} else {
val=val+"&"+curString+"-1";
if(selState[i]==false&&enableState[i]==true){
if(val.length()==0){
val=val+curString+"-0";
} else {
val=val+"&"+curString+"-0";
return val;
public void updateSelectionStateTrackers(JList list) {
selState = new boolean[ list.getModel().getSize() ];
enableState = new boolean[ list.getModel().getSize() ];
for(int i = 0; i < selState.length; i++) {
selState[i] = false;
enableState[i] = true;
public int[] getSelectedIndices() {
if(!useCheckBoxAsIcon()) {
return new int[0];
int length = 0;
if(selState==null){
return null;
for(int i = 0; i < selState.length; i++) {
if(selState[i]) {
length++;
int[] indices = new int[length];
for(int i = 0, n = 0; i < selState.length; i++) {
if(selState[i]) {
indices[n++] = i;
//System.out.println("Selected Indices.length = " + indices.length);
return indices;
public Vector<Object> getSelectedObjects() {
int[] indices = getSelectedIndices();
Vector<Object> objects = new Vector<Object>();
if(indices==null){
return null;
for(int i = 0; i < indices.length; i++) {
objects.addElement( theList.getModel().getElementAt(indices[i]) );
return objects;
public void setIconHasBackground(boolean b) {
useIconBackground = b;
public Icon[] getIcons() {
return icons;
public Icon getIcon(int index) {
if(icons != null && icons.length == 0) {
return icon;
if(icons != null && index > icons.length) {
index = index - (icons.length - 1);
return icons[index];
public void setIcons(Icon[] icons) {
if(icons != null) {
useIndexSensitiveIcons = true;
this.icons = icons;
public void setIcon(Icon icon, int index) {
if(icons != null && icons.length > 0) {
icons[index] = icon;
public void setIconLabelDimension(Dimension dim) {
labelDim = dim;
public static IconedCellRendererField getCheckBoxRendererInstance() {
IconedCellRendererField cr = new IconedCellRendererField(new EmptyIcon());
cr.setUseCheckBoxAsIcon(true);
return cr;
public void setUseCheckBoxAsIcon(boolean use) {
useCheckBoxAsIcon = use;
createNoBackgroundPanel();
public boolean useCheckBoxAsIcon() {
return useCheckBoxAsIcon;
public void paintComponent(Graphics g) {
super.paintComponent(g);
public void setDisplayItemsAsLinks(boolean use) {
useLinkState = use;
public void setLinkColor(Color color) {
linkColor = color;
if(theList != null) {
theList.repaint();
public Color getLinkColor() {
return linkColor;
public void setHoverLinkColor(Color color) {
hoverColor = color;
if(theList != null) {
theList.repaint();
public Color getHoverLinkColor() {
return hoverColor;
public void setSelectedLinkColor(Color color) {
selectedLinkColor = color;
if(theList != null) {
theList.repaint();
public Color getSelectedLinkColor() {
return selectedLinkColor;
public void attachLinkSimulationListener() {
theList.setCursor( Cursor.getPredefinedCursor(Cursor.HAND_CURSOR) );
theList.addMouseListener( new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
isOnRow = true;
public void mouseExited(MouseEvent e) {
isOnRow = false;
currentLinkRow = -1;
theList.repaint();
theList.addMouseMotionListener( new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
isOnRow = true;
currentLinkRow = theList.locationToIndex( e.getPoint() );
theList.repaint();
/*table.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
public void mouseExited(MouseEvent e) {
isOnRow = false;
currentHighlightRow = -1;
table.repaint();
table.addMouseMotionListener( new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
isOnRow = true;
currentHighlightRow = table.rowAtPoint( e.getPoint() );
table.repaint();
public boolean shdPaintDivider() {
return paintDivider;
public void setPaintDivider(boolean paintDivider) {
this.paintDivider = paintDivider;
public void setDividerImage(Icon icon) {
this.dividerImage = icon;
setPaintDivider(true);
private void dispatchEvent(MouseEvent me) {
if(rect != null && box != null && rect.contains(me.getX(), me.getY())){
Point pt = me.getPoint();
pt.translate(0,0);
box.setBounds(rect);
box.dispatchEvent(new MouseEvent(box, me.getID()
, me.getWhen(), me.getModifiers()
, pt.x, pt.y, me.getClickCount()
, me.isPopupTrigger(), me.getButton()));
if(!box.isValid()) {
repaint();
System.out.println("Dispatch Event: Box.invalid called");
System.out.println("Dispatch Event called");
} else {
System.out.println("Dispatch Event Called, rect null");
public void mouseClicked(MouseEvent me){
dispatchEvent(me);
public void mouseEntered(MouseEvent me){
dispatchEvent(me);
public void mouseExited(MouseEvent me){
dispatchEvent(me);
public void mousePressed(MouseEvent me){
dispatchEvent(me);
public void mouseReleased(MouseEvent me){
dispatchEvent(me);
public class SelectionStateHandler extends MouseAdapter {
JList list = null;
public SelectionStateHandler(JList list) {
this.list = list;
public void mouseClicked(MouseEvent e)
* Handles the checkbox selection process. Uses the bounds property of the
* check box within the selected cell to determine whether the checkbox should
* be selected or not
public void mouseReleased(MouseEvent e) {
/*if(list == null || list.getSelectedIndex() == -1
|| !isEnabled( list.locationToIndex(e.getPoint()) ) ) {
return;
if(list == null || list.getSelectedIndex() == -1){
return;
int[] indices = list.getSelectedIndices();
// get the current relative position of the check box
//rect = box.getBounds(rect);
for(int i = 0; i < indices.length; i++) {
// get the current relative position of the check box
int loc = list.locationToIndex( e.getPoint() );
rect = list.getCellBounds(loc,loc);
// ensure the point clicked in within the checkBox
if(e.getX() < (rect.getX() + 20) ) {
Object obj=list.getModel().getElementAt(i);
//if(!obj.equals("SelectAll")&&!obj.equals("ClearAll")&&!obj.equals("GrayedAll")){
if(indices[i]>2){
selState[0]=false;
selState[1]=false;
selState[2]=false;
//����
if(!this.isEnabled(indices[i])&&selState[indices[i]]==true){
this.setEnabled(indices[i],true);
selState[indices[i]]=false;
} else if(this.isEnabled(indices[i])&&selState[indices[i]]==true){
//����
selState[indices[i]]=true;
this.setEnabled(indices[i],false);
}else if(this.isEnabled(indices[i])&&selState[indices[i]]==false){
//����
selState[indices[i]]=true;
this.setEnabled(indices[i],true);
} else {
selState[indices[i]] = !selState[indices[i]];
list.revalidate();
list.repaint();
public void selectAll(boolean b) {
for(int i = 0; i < list.getModel().getSize(); i++) {
try {
this.enableAll(true);
Object obj=list.getModel().getElementAt(i);
if(!obj.equals("ClearAll")&&!obj.equals("GrayedAll")){
selState[i] = b;
} else{
selState[i]=!b;
selState[0]=false;
} catch(ArrayIndexOutOfBoundsException aie) {
updateSelectionStateTrackers(list);
selectAll(b);
return;
if(list != null) {
list.revalidate();
list.repaint();
public void clearAll(boolean b){
for(int i = 0; i < list.getModel().getSize(); i++) {
try {
Object obj=list.getModel().getElementAt(i);
this.enableAll(true);
if(!obj.equals("ClearAll")){
selState[i] = !b;
} else{
selState[i]=b;
selState[1]=false;
} catch(ArrayIndexOutOfBoundsException aie) {
updateSelectionStateTrackers(list);
selectAll(b);
return;
if(list != null) {
list.revalidate();
list.repaint();
public void grayedAll(boolean b){
for(int i = 0; i < list.getModel().getSize(); i++) {
try {
Object obj=list.getModel().getElementAt(i);
if(!obj.equals("SelectAll")&&!obj.equals("ClearAll")){
if(i==2){
selState[i] = !b;
}else{
selState[i] = b;
this.setEnabled(i,false);
} else{
selState[i]=!b;
} catch(ArrayIndexOutOfBoundsException aie) {
updateSelectionStateTrackers(list);
selectAll(b);
return;
if(list != null) {
list.revalidate();
list.repaint();
public void setSelectedIndex(int index) {
for(int i = 0; i < list.getModel().getSize(); i++) {
selState[i] = false;
selectIndex(index);
public void selectIndex(int index) {
try {
selState[index] = true;
} catch(ArrayIndexOutOfBoundsException aie) {
updateSelectionStateTrackers(list);
selectIndex(index);
return;
if(list != null) {
list.revalidate();
list.repaint();
public void setEnabled(int index, boolean b) {
try {
enableState[index] = b;
} catch(ArrayIndexOutOfBoundsException aie) {
updateSelectionStateTrackers(list);
setEnabled(index, b);
public boolean isEnabled(int index) {
if(index == -1) {
return true;
boolean isEnabled = true;
try {
isEnabled = enableState[index];
} catch(ArrayIndexOutOfBoundsException aie) {
updateSelectionStateTrackers(list);
return isEnabled(index);
return isEnabled;
public void enableAll(boolean b) {
for(int i = 0; i < enableState.length; i++) {
enableState[i] = b;
public void selectAll(boolean b) {
if(selStateHandler == null) {
return;
selStateHandler.selectAll(b);
public void clearAll(boolean b){
if(selStateHandler == null) {
return;
selStateHandler.clearAll(b);
public void grayedAll(boolean b){
if(selStateHandler == null) {
return;
selStateHandler.grayedAll(b);
public void setSelectedIndex(int index) {
if(selStateHandler == null) {
return;
selStateHandler.setSelectedIndex(index);
public void selectIndex(int index) {
if(selStateHandler == null) {
return;
selStateHandler.selectIndex(index);
public void enableAll(boolean b) {
if(selStateHandler == null) {
return;
selStateHandler.enableAll(b);
public void setEnabled(int index, boolean enable) {
if(selStateHandler == null) {
return;
selStateHandler.setEnabled(index, enable);
public boolean isEnabled(int index) {
if(selStateHandler == null) {
return true;
return selStateHandler.isEnabled(index);
public boolean isEnabledAll() {
if(enableState == null) return true;
for(int i = 0; i < enableState.length; i++) {
if(!isEnabled(i)) {
return false;
return true;
// EmptyIcon implementation
public static class EmptyIcon implements Icon {
int width = 16, height = 16;
public EmptyIcon() {
setSize(16,16);
public EmptyIcon(int width, int height) {
setSize(width, height);
public void setSize(int width, int height) {
this.width = width;
this.height = height;
public int getIconWidth() { return width; }
public int getIconHeight() { return height; }
public void paintIcon(Component c, Graphics g, int x, int y) {}
public int getItemCount(){
if(theList!=null){
return theList.getModel().getSize();
} else {
return 0;
public boolean[] getEnableState() {
return enableState;
public boolean[] getSelState() {
return selState;
public JList getTheList() {
return theList;
testbox :import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JComboBox;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
public class testbox extends JComboBox
* @param args
JComboBox myComboBox;
public testbox()
myComboBox = new JComboBox();
public void setPopupVisible(boolean b)
if(b)
myComboBox.showPopup();
You are updating the label value when (index == -1), let change into (index<=0).
like below
// this should cause a JComboBox to paint the Label instead of the
// check box + label combination
if (index <= 0) {
Vector v = new Vector();
v = getSelectedObjects();
String val = generateString();
JLabel label = new JLabel(val);
if (iconLabel.getIcon() != null) {
label.setIcon(iconLabel.getIcon());
System.out.println("label");
return label;
}
Maybe you are looking for
-
I just got assigned the task of maintaining the website at my work, but I only have the basics down when it comes to Dreamweaver. What I need to do is add some more webpages to the website and I wasn't sure if there was a way i could use one of the p
-
Hi Im using the following API: CL_WS_HELPER=>get_proxy_abapkey_by_esrkey( EXPORTING esr_key = l_t_esr_key IMPORTING abap_key = l_t_abap_key EXCEPTIONS not_found = 1 This API throws NOT_FOUND Exception. Questions: 1. I'm not able to
-
InputsourceXML String to XML fields
Hi Experts, My requirement is to convert the Input XMLstring into XML fields.Actually the original XML comes in <Payload> field as a string.I want to convert it to XML fields.How to achieve it through java mapping?Please provide your suggestion. Rega
-
Impossible to upload photoshop in adobe application manager
because it's updated. But i don 't have photoshop on my compunter ( mac )
-
My iPhone 3G USB Connector is Torn!
There is a small tear on the dock connector end of my iPhone 3G cord. A few days after i got my iPhone, i noticed a bulge in the cord just past the thick part on the end that connects to the phone. In a couple weeks this bulge has turned into a hole