[英]Java remove JComboBox arrow button
我使用netbeans IDE從面板添加了一個JComboBox,並使用mysql數據庫中的內容填充了它。 我還使用swingx-all-1.6.5-1添加了自動完成功能
組合框的填充方法
public void doPopulateCombo(){
Connection con = Functions.ConnectToDB();
try {
Statement stmt = con.createStatement();
String sqlQuery = "select * from products";
ResultSet rs = stmt.executeQuery(sqlQuery);
while(rs.next()){
String product_name = rs.getString("Product_Name");
cboProducts.addItem(product_name);
}
con.close();
cboProducts.setSelectedIndex(-1);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Error populating combo box\n"+e.toString(),
"Error",JOptionPane.ERROR_MESSAGE);
}
}
如何刪除組合框的箭頭按鈕,使其看起來像文本框?
我能想到的最好的辦法是將其放入比它稍小的JPanel中,但是根據L&F的不同,並不是真正的最佳方法。 另外,您可以創建一個擴展JComboBox的類,重寫paint(Graphics g)方法,然后從該調用具有相同尺寸的文本框的paint方法。 至少,我認為您可以這樣做。 請注意,每次用戶選擇一個選項時,您都必須更新文本框中的內容。
解決此問題的一種怪異方法是創建您自己的BasicComboBoxUI實現並覆蓋createArrowButton()
public class NoArrowJComboBoxUI extends BasicComboBoxUI {
@Override
protected JButton createArrowButton() {
JButton btn = new JButton();
btn.setPreferredSize(new Dimension(0,0));
btn.setVisible(false);
return btn;
}
}
然后在您現有的代碼中:
cboProducts.setSelectedIndex(-1);
cboProducts.setUI(new NoArrowJComboBoxUI());
此實現不應干擾自動完成行為,但是,我自己尚未使用自動完成功能對其進行測試,因此無法確定地說。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.