導航:首頁 > 編程語言 > javaswingjtable

javaswingjtable

發布時間:2023-05-05 15:05:28

1. java swing如何在JTable一個單元格添加多個復選框

java swing中在jTable中添加多個復選框的方式如下:

importjava.awt.Component;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;

importjavax.swing.*;
importjavax.swing.table.*;


{

//作為測試的main方法
publicstaticvoidmain(String[]args){
newMyFirstJFrame().setVisible(true);
}

/**
*構造方法
*/
publicMyFirstJFrame(){
InitialComponent();
}

/**
*初始化組件的方法
*/
privatevoidInitialComponent(){
//設置窗體參數

//設置布局模式
setLayout(null);
//設置窗體大小
setSize(480,360);
//設置窗體居中(非常規方法)
setLocationRelativeTo(null);
//關閉窗體退出程序
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//初始化面板
panel=newJPanel();
panel.setSize(this.getWidth(),this.getHeight());
panel.setLocation(0,0);
panel.setLayout(null);

//初始化表格
table=newJTable(newDefaultTableModel(newObject[][]{{"第一行"},{"第二行"},{"第三行"},{"第四行"}},newString[]{"測試行1","測試行2"}){
/*(non-Javadoc)
*重寫方法,判斷指畢表單元格是否可編輯
*可以通過row和column索引判斷某一個單元格是否可編輯
*此處設為都不可編輯
*@seejavax.swing.table.DefaultTableModel#isCellEditable(int,int)
*/
@Override
publicbooleanisCellEditable(introw,intcolumn){
returnfalse;
}
});

//開始向表格中添加復選框(注意:此示例較為簡單,預設很多判斷,也沒有動態代碼支持)
//通過設置列渲染

//方法一:直接方式使用TableColumn的setCellRenderer方法(推薦)
//此方法可以設置某一列的渲染唯跡芹(即使用某一個組件--即控制項來顯示單元格數據)
table.getColumnModel().getColumn(1).setCellRenderer(newTableCellRenderer(){

/*(non-Javadoc)
*此方法用於向方法調用者返回某一單元格的渲染器(即顯示數據的組建--或控制項)
*可以為JCheckBoxJComboBoxJTextArea等
*@seejavax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,java.lang.Object,boolean,boolean,int,int)
*/
@Override
(JTabletable,
Objectvalue,booleanisSelected,booleanhasFocus,
introw,intcolumn){
//創建用於返回的渲染組件
JCheckBoxck=newJCheckBox();
//使具有焦點的行對應的復選框選中
ck.setSelected(isSelected);
//設置單選box.setSelected(hasFocus);
//使復選框州緩在單元格內居中顯示
ck.setHorizontalAlignment((int)0.5f);
returnck;
}});

//方法二:先設置列編輯器,然後設置單元格渲染
//設置列編輯器
//在以復選框為對象設置列編輯器時,必須保證該列能夠被編輯,否則無法更改狀態
//(此步驟可以省略,省略時不要忘記將列設為不可編輯)
//table.getColumnModel().getColumn(1).setCellEditor(newDefaultCellEditor(newJCheckBox()));

//設置單元格渲染(這里是設置表格級別的渲染)
/*table.setDefaultRenderer(Object.class,newTableCellRenderer(){

@Override
(JTabletable,
Objectvalue,booleanisSelected,booleanhasFocus,
introw,intcolumn){
//判斷是否為需要渲染的列
if(column==1){
//和方法一基本一致
JCheckBoxbox=newJCheckBox();
box.setSelected(isSelected);
//設置單選box.setSelected(hasFocus);
box.setHorizontalAlignment((int)CENTER_ALIGNMENT);//0.5f
returnbox;
}
//如果不是需要渲染的列,封裝文本域顯示數據
returnnewJTextArea(value.toString());
}});*/

//在多選是需要按住Ctrl鍵或者滑鼠按住拖過連續的需要選中的行,應該給用戶說明
//第一種方法是被推薦的,因為它具有選中的高亮顯示,界面能更加友好
table.setSize(panel.getWidth(),panel.getHeight()-90);
table.setLocation(0,0);


btn=newJButton("Test");
btn.setSize(80,40);
btn.setLocation((panel.getWidth())/2-40,panel.getHeight()-80);

//按鈕點擊時顯示當前選中項
btn.addActionListener(newActionListener(){

@Override
publicvoidactionPerformed(ActionEvente){
for(introwindex:table.getSelectedRows()){
JOptionPane.showMessageDialog(null,rowindex+""+table.getValueAt(rowindex,0));
}
}});

panel.add(table);
panel.add(btn);
this.add(panel);

}

//定義一些必要的組件
privateJPanelpanel;
privateJTabletable;
privateJButtonbtn;
}

2. java swing JTable顯示問題

如果是這樣的話,我有一個建議。不要自動拉長表格列寬。
而是將卜絕單元格換成LABEL表示。
這樣你就可以用tooltip屬性。表格里是用....來攜鎮代替,滑鼠放上去會有懸浮顯型隱姿示全部。

3. java swing jtable中每一列數據類型怎樣設置,比如設置一列的為Boolean類型

構造table模型的時候指定一個Class類型數組,覆寫table模型(如DefaultTableModel)的getColumnClass(int columnIndex)方法爛純,返回對應的Class數組小標元素即可。核歷棗
另外,table默認是接受boolean類型改拆的,直接在構造模型數據時,把該列數據寫為true/false就可,展示的時候就是一個復選框。
還有就是,部分IDE帶設計視圖,可以在視圖上定義表格列類型和內容,如NetBeans。

4. Java swing怎麼給JTable加表頭,

//創建表格:直接有表跡沒談頭
TableModelmodel=newDefaultTableModel(//
姿碰newObject[][]{{"11","12"},{"21","22"}},//數據
newObject[]{"第一列","第二列"}//表察告頭
);
JTabletable=newJTable(model);

5. Java Swing中JTable的列順序該怎麼調整

TableColumn tc=this.getColumn(0);// 取到一列
JComboBox cbx = new JComboBox(new String[] {"a"坦岩,"b","c"});//此鉛 建立下拉列表
TableCellEditor tce=new DefaultCellEditor(cbx);// 創建編輯器
tc.setCellEditor(tce);/森信好/ 設置編輯器

6. 我用JAVA的swing創建了一個窗口程序,拖了一個jTable控制項在窗體上,怎樣把資料庫中的內容顯示在Table上

public class T extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JTextField jTextField = null;
private JTextField jTextField1 = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JTable jTable = null;
private DefaultTableModel tableModel = null;

private JPanel getJPanel() {
if (jPanel == null) {
JLabel jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(30, 50, 80, 25));
jLabel1.setText("請輸入ISBN:");
JLabel jLabel = new JLabel();
jLabel.setBounds(new Rectangle(30, 20, 80, 25));
jLabel.setText("請輸入書名:");
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.setPreferredSize(new Dimension(1, 120));
jPanel.add(jLabel);
jPanel.add(jLabel1);
jPanel.add(getJTextField());
jPanel.add(getJTextField1());
jPanel.add(getJButton());
jPanel.add(getJButton1());
jPanel.add(getJButton2());
}
return jPanel;
}

private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(120, 20, 140, 25));
}
return jTextField;
}

private JTextField getJTextField1() {
if (jTextField1 == null) {
jTextField1 = new JTextField();
jTextField1.setBounds(new Rectangle(120, 50, 140, 25));
}
return jTextField1;
}

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(270, 20, 60, 25));
jButton.setText("顯示");
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* 修改處 */
}
});
}
return jButton;
}

private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(270, 50, 60, 25));
jButton1.setText("顯示");
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* 修改處 */
}
});
}
return jButton1;
}

private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setBounds(new Rectangle(240, 80, 90, 30));
jButton2.setText("顯示全部");
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/*
* 修改處此處只要改下面一行,換成從資料庫讀就行
* 應該在DAO層加一個查詢全部的方法
* public List<Titles> getAll();具體實現自己寫。
* 把114行的代碼改成:List<Titles> lists = new TitleDaoImpl().getAll();
* */
List<Titles> lists = Titles.list();
// 將錶行數設為0行,防止異常
tableModel.setRowCount(0);
for (int i = 0; i < lists.size(); i++) { // 當每有一個Titles對象就添加一行
tableModel.addRow(new Object[] {});
}
Titles instance = null;
Object obj = null;
Object name = null;
for (int i = 0; i < tableModel.getRowCount(); i++) { // 行循環
instance = lists.get(i); // 為當前Titles對象賦值
for (int j = 0; j < tableModel.getColumnCount(); j++) {
name = tableModel.getColumnName(j);
if (name.equals("ISBN")) {
obj = instance.getISBN();
} else if (name.equals("title")) {
obj = instance.getTitle();
} else if (name.equals("publisher")) {
obj = instance.getPublisher();
} else if (name.equals("date")) {
obj = instance.getDate();
} else if (name.equals("price")) {
obj = instance.getPrice();
} else {
obj = "";
}
tableModel.setValueAt(obj, i, j);
}
}
}
});
}
return jButton2;
}

private JPanel getJPanel1() {
JScrollPane jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getJTable());
JPanel panel = new JPanel(new BorderLayout());
panel.add(jScrollPane, BorderLayout.CENTER);
return panel;
}

private JTable getJTable() {
if (jTable == null) {
// 獲得Titles類里的欄位,一個欄位在JTable中應該表現為一列
Field[] fields = Titles.class.getDeclaredFields();
// 將欄位名保存為列名數組為DefaultTableModel所用
Object[] columnNames = new Object[fields.length];
for (int i = 0; i < fields.length; i++) {
columnNames[i] = fields[i].getName();
}
tableModel = new DefaultTableModel(columnNames, 0);
jTable = new JTable(tableModel);
}
return jTable;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
T thisClass = new T();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}

public T() {
super();
setSize(580, 475);
getContentPane().add(getJPanel(), BorderLayout.SOUTH);
getContentPane().add(getJPanel1(), BorderLayout.CENTER);
}

}

7. java的swing編程,Jtable的單元格如何賦值

不能對JTable直接進行增刪改,要先獲取JTable的model然後修改model再將修改後的model賦給JTable

String[] data = new String[8];//用於操作表內數據行的data數組,元素個數要與table的列的數量相一致
int numT;//表格已有數據的行數
JTable jTable=new JTable();
DefaultTableModel model = (DefaultTableModel) this.jTable.getModel();
numT = model.getRowCount();//獲取當前已有行數
while (numT > 0) {//如果是全體刷新表野仿格需要移除之前的所有數據行
model.removeRow(0);
numT--;
}
sql= "select name,number,area,price,room,acreage,fishing,mating from message";
try{
rs=stmt.executeQuery(sql);
while (rs.next()) {
data[0] = rs.getString(1).trim();
data[1] = rs.getString(2).trim();
data[2] = rs.getString(3).trim();
data[3] = rs.getString(4).trim();
data[4] = rs.getString(5).trim();
data[5] = rs.getString(6).trim();
data[6] = rs.getString(7).trim();
data[7] = rs.getString(8).trim();
model.addRow(data);
}
}catch(SQLException e){
System.err.print("Error" + e.getMessage());
}
jTable.setModel(model);//將修改後的model傳回給JTable

至於JButton那旁橡些觸發在事件偵聽里,根據
jTable.getSelectedRow();獲取已選行號
jTable.getSelectedColumn();獲取已選列號
改行就光獲取行號就可以了,然後讀取模板,刪掉該行再傳回給JTable即可
在JTable創建時可以選擇設置是否允許多選,不多選上面的方法已運脊旁經夠了
還有什麼網路hi吧,這里不多說了,省的又要審核了

8. java swing中jtable,table中有一列數據,是/否,我想把是的顏色變為紅色怎麼做求大神指點,,,

1、首先寫一個類繼承 DefaultTableCellRenderer
重寫扮困余getTableCellRendererComponent 方法,方法里可以對你的要求進行設置,形如
if( value.equals("尺穗是"廳滾)){
this.setBackground(bgColor);
this.setForeground(fgColor);
}
2、然後設置:
xxxTable.setDefaultRenderer(Object.class, new xxxxTableRenderer());

9. java swing 通過Jtable可以讀取配置properties文件。

這里的概念錯了。
首先讀取properties和顯示properties是悶臘兩個方面。
按MVC結構來說,JTable是View部分,只負埋罩碧責顯示數據,數據怎麼彎舉來不管。讀取properties文件可以使用java.util.Properties類。

閱讀全文

與javaswingjtable相關的資料

熱點內容
微信聊天界面源碼 瀏覽:22
seo競價推廣點擊價格演算法公式 瀏覽:315
框架結構可以加密嗎 瀏覽:218
python編譯器怎麼清除 瀏覽:73
linux全局socks代理 瀏覽:611
php微信抽獎 瀏覽:771
壓縮演算法嵌入式移植 瀏覽:531
php新手小例子 瀏覽:233
按照醫生的演算法一周是幾天 瀏覽:805
三次b樣條曲線演算法 瀏覽:924
java7特性 瀏覽:555
愛山東app小學報名怎麼知道報沒報上 瀏覽:458
android獲取wifi信號 瀏覽:133
娜拉美妝app怎麼使用 瀏覽:760
有了源碼要買伺服器嗎 瀏覽:365
app怎麼查看自己的存款利息 瀏覽:515
碧藍安卓與b站有什麼區別 瀏覽:342
php靜態塊 瀏覽:719
ftpmget命令 瀏覽:475
源碼時代怎樣 瀏覽:415