how do i add combobox to a table ?
thank YOU
7 2420
can i do it just like this ?
public void addRow(int id,String ilosc,String d,JComboBox s) {
int size = theRows.size();
theRows.add(new Row(id,ilosc,d,s));
theTableModel.fireTableRowsInserted(size, size);
}
can i do it just like this ?
public void addRow(int id,String ilosc,String d,JComboBox s) {
int size = theRows.size();
theRows.add(new Row(id,ilosc,d,s));
theTableModel.fireTableRowsInserted(size, size);
}
Well try it and see. You'll learn lots of things by trying and watching the compiler's messages in all their glory. The Java tears are sweetest in swing.
and that column to which i add combobox i define as what ?
okey i found some code hope it will work
-
-
import javax.swing.DefaultCellEditor;
-
import javax.swing.JComboBox;
-
import javax.swing.JFrame;
-
import javax.swing.JPanel;
-
import javax.swing.JScrollPane;
-
import javax.swing.JTable;
-
import javax.swing.table.AbstractTableModel;
-
import javax.swing.table.DefaultTableCellRenderer;
-
import javax.swing.table.TableCellRenderer;
-
import javax.swing.table.TableColumn;
-
-
import java.awt.BorderLayout;
-
import java.awt.Component;
-
import java.awt.Dimension;
-
import java.awt.GridLayout;
-
-
/**
-
* TableRenderDemo is just like TableDemo, except that it
-
* explicitly initializes column sizes and it uses a combo box
-
* as an editor for the Sport column.
-
*/
-
public class TableClient extends JPanel {
-
private boolean DEBUG = false;
-
private JPanel thePanel;
-
public TableClient() {
-
//super(new GridLayout(1,0));
-
thePanel = new JPanel(new BorderLayout());
-
JTable table = new JTable(new MyTableModel());
-
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
-
table.setFillsViewportHeight(true);
-
-
//Create the scroll pane and add the table to it.
-
JScrollPane scrollPane = new JScrollPane(table);
-
-
//Set up column sizes.
-
initColumnSizes(table);
-
-
//Fiddle with the Sport column's cell editors/renderers.
-
setUpStatusColumn(table, table.getColumnModel().getColumn(3));
-
-
//Add the scroll pane to this panel.
-
thePanel.add(scrollPane, BorderLayout.CENTER);
-
}
-
-
/*
-
* This method picks good column sizes.
-
* If all column heads are wider than the column's cells'
-
* contents, then you can just use column.sizeWidthToFit().
-
*/
-
private void initColumnSizes(JTable table) {
-
MyTableModel model = (MyTableModel)table.getModel();
-
TableColumn column = null;
-
Component comp = null;
-
int headerWidth = 0;
-
int cellWidth = 0;
-
Object[] longValues = model.longValues;
-
TableCellRenderer headerRenderer =
-
table.getTableHeader().getDefaultRenderer();
-
-
for (int i = 0; i < 5; i++) {
-
column = table.getColumnModel().getColumn(i);
-
-
comp = headerRenderer.getTableCellRendererComponent(
-
null, column.getHeaderValue(),
-
false, false, 0, 0);
-
headerWidth = comp.getPreferredSize().width;
-
-
comp = table.getDefaultRenderer(model.getColumnClass(i)).
-
getTableCellRendererComponent(
-
table, longValues[i],
-
false, false, 0, i);
-
cellWidth = comp.getPreferredSize().width;
-
-
if (DEBUG) {
-
System.out.println("Initializing width of column "
-
+ i + ". "
-
+ "headerWidth = " + headerWidth
-
+ "; cellWidth = " + cellWidth);
-
}
-
-
column.setPreferredWidth(Math.max(headerWidth, cellWidth));
-
}
-
}
-
-
public void setUpStatusColumn(JTable table,
-
TableColumn statusColumn) {
-
//Set up the editor for the sport cells.
-
JComboBox comboBox = new JComboBox();
-
comboBox.addItem("Nie potwierdzono");
-
comboBox.addItem("Potwierdzono");
-
comboBox.addItem("Dostarczono");
-
comboBox.addItem("Nie dostarczono");
-
comboBox.addItem("Zamkniete");
-
comboBox.addItem("Anulowane");
-
statusColumn.setCellEditor(new DefaultCellEditor(comboBox));
-
-
//Set up tool tips for the sport cells.
-
DefaultTableCellRenderer renderer =
-
new DefaultTableCellRenderer();
-
renderer.setToolTipText("Kliknij aby ukazal sie combo box");
-
statusColumn.setCellRenderer(renderer);
-
}
-
-
class MyTableModel extends AbstractTableModel {
-
String[] columnNames = {"ID",
-
"Ilosc","Data Wyslania","Status"};
-
private Object[][] data = {
-
{"Mary", "Campione",
-
"Snowboarding", new Integer(5), new Boolean(false)},
-
{"Alison", "Huml",
-
"Rowing", new Integer(3), new Boolean(true)},
-
{"Kathy", "Walrath",
-
"Knitting", new Integer(2), new Boolean(false)},
-
{"Sharon", "Zakhour",
-
"Speed reading", new Integer(20), new Boolean(true)},
-
{"Philip", "Milne",
-
"Pool", new Integer(10), new Boolean(false)}
-
};
-
-
public final Object[] longValues = {"Sharon", "Campione",
-
"None of the above",
-
new Integer(20), Boolean.TRUE};
-
-
public int getColumnCount() {
-
return columnNames.length;
-
}
-
-
public int getRowCount() {
-
return data.length;
-
}
-
-
public String getColumnName(int col) {
-
return columnNames[col];
-
}
-
-
public Object getValueAt(int row, int col) {
-
return data[row][col];
-
}
-
-
/*
-
* JTable uses this method to determine the default renderer/
-
* editor for each cell. If we didn't implement this method,
-
* then the last column would contain text ("true"/"false"),
-
* rather than a check box.
-
*/
-
public Class getColumnClass(int c) {
-
return getValueAt(0, c).getClass();
-
}
-
-
/*
-
* Don't need to implement this method unless your table's
-
* editable.
-
*/
-
public boolean isCellEditable(int row, int col) {
-
//Note that the data/cell address is constant,
-
//no matter where the cell appears onscreen.
-
if (col != 3) {
-
return false;
-
} else {
-
return true;
-
}
-
}
-
-
/*
-
* Don't need to implement this method unless your table's
-
* data can change.
-
*/
-
public void setValueAt(Object value, int row, int col) {
-
if (DEBUG) {
-
System.out.println("Setting value at " + row + "," + col
-
+ " to " + value
-
+ " (an instance of "
-
+ value.getClass() + ")");
-
}
-
-
data[row][col] = value;
-
fireTableCellUpdated(row, col);
-
-
if (DEBUG) {
-
System.out.println("New value of data:");
-
printDebugData();
-
}
-
}
-
public JPanel getPanel() {
-
return thePanel;
-
}
-
private void printDebugData() {
-
int numRows = getRowCount();
-
int numCols = getColumnCount();
-
-
for (int i=0; i < numRows; i++) {
-
System.out.print(" row " + i + ":");
-
for (int j=0; j < numCols; j++) {
-
System.out.print(" " + data[i][j]);
-
}
-
System.out.println();
-
}
-
System.out.println("--------------------------");
-
}
-
}
-
-
-
-
-
-
}
-
-
-
but i dont want to have data defined in table model i need to pass the data to table how do ia do that?
how do i add eg Object[] d to Object[][] data ?
i made it :) but now i need to listen for the changes in that combobox
-
import javax.swing.DefaultCellEditor;
-
import javax.swing.JComboBox;
-
import javax.swing.JFrame;
-
import javax.swing.JPanel;
-
import javax.swing.JScrollPane;
-
import javax.swing.JTable;
-
import javax.swing.event.TableModelEvent;
-
import javax.swing.event.TableModelListener;
-
import javax.swing.table.AbstractTableModel;
-
import javax.swing.table.DefaultTableCellRenderer;
-
import javax.swing.table.TableCellRenderer;
-
import javax.swing.table.TableColumn;
-
-
-
-
import java.awt.BorderLayout;
-
import java.awt.Component;
-
import java.awt.Dimension;
-
import java.awt.GridLayout;
-
-
import java.util.ArrayList;
-
import java.util.List;
-
/**
-
* TableRenderDemo is just like TableDemo, except that it
-
* explicitly initializes column sizes and it uses a combo box
-
* as an editor for the Sport column.
-
*/
-
public class TableClient extends JPanel implements TableModelListener {
-
private boolean DEBUG = false;
-
private JPanel thePanel;
-
private List<OrderClient> data;
-
private MyTableModel model;
-
public TableClient() {
-
data = new ArrayList<OrderClient>();
-
//super(new GridLayout(1,0));
-
thePanel = new JPanel(new BorderLayout());
-
model = new MyTableModel();
-
-
-
JTable table = new JTable(new MyTableModel());
-
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
-
table.setFillsViewportHeight(true);
-
table.getModel().addTableModelListener(this);
-
//Create the scroll pane and add the table to it.
-
JScrollPane scrollPane = new JScrollPane(table);
-
-
//Set up column sizes.
-
////initColumnSizes(table);
-
-
//Fiddle with the Sport column's cell editors/renderers.
-
setUpStatusColumn(table, table.getColumnModel().getColumn(3));
-
-
//Add the scroll pane to this panel.
-
thePanel.add(scrollPane, BorderLayout.CENTER);
-
}
-
public JPanel getPanel() {
-
return thePanel;
-
}
-
-
public void addData(OrderClient oc){
-
data.add(oc);
-
int size = data.size();
-
model.fireTableRowsInserted(size, size);
-
}
-
public void tableChanged(TableModelEvent e) {
-
int row = e.getFirstRow();
-
int column = e.getColumn();
-
MyTableModel model = (MyTableModel)e.getSource();
-
String columnName = model.getColumnName(column);
-
Object data = model.getValueAt(row, column);
-
-
// Do something with the data...
-
}
-
-
-
/*
-
* This method picks good column sizes.
-
* If all column heads are wider than the column's cells'
-
* contents, then you can just use column.sizeWidthToFit().
-
*/
-
-
-
public void setUpStatusColumn(JTable table,
-
TableColumn statusColumn) {
-
//Set up the editor for the sport cells.
-
JComboBox comboBox = new JComboBox();
-
comboBox.addItem("Nie potwierdzono");
-
comboBox.addItem("Potwierdzono");
-
comboBox.addItem("Dostarczono");
-
comboBox.addItem("Nie dostarczono");
-
comboBox.addItem("Zamkniete");
-
comboBox.addItem("Anulowane");
-
statusColumn.setCellEditor(new DefaultCellEditor(comboBox));
-
-
//Set up tool tips for the sport cells.
-
DefaultTableCellRenderer renderer =
-
new DefaultTableCellRenderer();
-
renderer.setToolTipText("Kliknij aby ukazal sie combo box");
-
statusColumn.setCellRenderer(renderer);
-
}
-
-
class MyTableModel extends AbstractTableModel {
-
String[] columnNames = {"ID",
-
"Ilosc","Data Wyslania","Status"};
-
-
-
-
public int getColumnCount() {
-
return columnNames.length;
-
}
-
-
public int getRowCount() {
-
return data.size();
-
}
-
-
public String getColumnName(int col) {
-
return columnNames[col];
-
}
-
-
public Object getValueAt(int row, int col) {
-
OrderClient orderclient = data.get(row);
-
if(col==0)return orderclient.getID();
-
else if (col==1) return orderclient.getQuantity();
-
else if (col==2) return orderclient.getDate();
-
else return orderclient.getStatus();
-
}
-
public Integer getID(int row){
-
OrderClient orderclient = data.get(row);
-
return orderclient.getID();}
-
-
-
public String getStatus(int row){
-
OrderClient orderclient = data.get(row);
-
return orderclient.getStatus();}
-
/*
-
* JTable uses this method to determine the default renderer/
-
* editor for each cell. If we didn't implement this method,
-
* then the last column would contain text ("true"/"false"),
-
* rather than a check box.
-
*/
-
public Class getColumnClass(int c) {
-
return getValueAt(0, c).getClass();
-
}
-
-
/*
-
* Don't need to implement this method unless your table's
-
* editable.
-
*/
-
public boolean isCellEditable(int row, int col) {
-
//Note that the data/cell address is constant,
-
//no matter where the cell appears onscreen.
-
if (col != 3) {
-
return false;
-
} else {
-
return true;
-
}
-
}
-
public void setValueAt(String value, int row, int col) {
-
OrderClient orderclient = data.get(row);
-
orderclient.setStatus(value);
-
fireTableCellUpdated(row, col);
-
}
-
/*
-
* Don't need to implement this method unless your table's
-
* data can change.
-
*/
-
-
-
-
}
-
}
-
-
my setValueAt doesnt work what should i change to make it work ?
Sign in to post your reply or Sign up for a free account.
Similar topics
by: L L |
last post by:
Dear all,
Is it possible to set selected item a table row or in other ways, the
editable JComboBox 's JTextField- can that be replace by a one row table?
If possible, any direction of what...
|
by: Hal Vaughan |
last post by:
I have a JComboBox with a list of numbers, from 1 digit to 5 digits.
Numbers with more than 3 digits have a comma in them.
I've been aligning them with leading spaces. Is there any simple and...
|
by: Yasser |
last post by:
Hi All,
I developed an application (JFrame) to connect to mysql database. The
application will select price from itemsTable and add each each item
to a JComboBox. If the user change the prices in...
|
by: Robert |
last post by:
When I select a normal cell with a default editor for strings and press
a letter key, the letter is automaticaly typed in the cell, but when I
select a cell with an editable JComboBox editor and...
|
by: jerico |
last post by:
Hi, I am developing an application for which I need to increase the size of the JComboBox.But it is not getting increased.I used the following technique:
Container cont;
JComboBox valueTypeBox ;...
|
by: jeffbroodwar |
last post by:
Hi,
I tried to use JCombobox (i'm using netbeans 5.5)
how can i use this jComboBox1? how can i load elements? I tried this code but i'm receiving errors....
...
|
by: dycharles |
last post by:
I have a JComboBox loaded with 20,000 data, my problem is when i scroll down or scroll up, it is slower than the JComboBox with the smaller data. What can i do to make my JComboBox run faster or like...
|
by: thesti |
last post by:
hi,
How to, if user change the selected item of a JComboBox, it will enable another JComboBox. it's like a validation that the user has to select the year first, then the month, than the date.
...
|
by: HaifaCarina |
last post by:
i have this unfinished java program and i can't figure out what is the problem..
please help...
/**
* @(#)Answer3.java
*
*
* @author
* @version 1.00 2008/1/17
|
by: javatech007 |
last post by:
I am trying to use comboboxes in a ticket payment screen for train tickets. I have two combo boxes. One for picking a route and the other for picking a time. What i want is when you pick a route in...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new...
| |