- - PR -
JComboBoxのリサイズについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-05-12 12:36
こんにちは。
以下は、同じItemのtoString()の戻り値を"a"から"a-changed"に変更することで、JComboBoxの表示を変更しようとしているプログラムですが、うまく行きません。JComboBoxがリサイズされないため、"a-changed"が表示しきれず、"..."とだけ表示されます。どのように解決すればよいでしょうか? よろしくおねがいします。 ---- import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; public class ChangeItem extends JFrame { public static void main(String[] args) { new ChangeItem(); } private ChangeItem() { setSize(300, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cp = getContentPane(); cp.setLayout(new FlowLayout()); Combo combo = new Combo(); cp.add(combo); cp.add(combo.new XButton()); setVisible(true); } private static class Combo extends JComboBox { private Combo() { addItem(new Item("a")); } private class XButton extends JButton { private XButton() { super("change"); } protected void fireActionPerformed(ActionEvent e) { Item i = (Item) getSelectedItem(); i.displayName = i.displayName == "a-changed" ? "a" : "a-changed"; Combo.this.repaint(); } } } private static class Item { private String displayName; private Item(String displayName) { this.displayName = displayName; } public String toString() { return displayName; } } } | ||||
|
投稿日時: 2005-05-12 12:39
インデントが無くて読みづらかったので、BBコードを使ってみました。どうでしょう?
[CODE] import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; public class ChangeItem extends JFrame { public static void main(String[] args) { new ChangeItem(); } private ChangeItem() { setSize(300, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cp = getContentPane(); cp.setLayout(new FlowLayout()); Combo combo = new Combo(); cp.add(combo); cp.add(combo.new XButton()); setVisible(true); } private static class Combo extends JComboBox { private Combo() { addItem(new Item("a")); } private class XButton extends JButton { private XButton() { super("change"); } protected void fireActionPerformed(ActionEvent e) { Item i = (Item) getSelectedItem(); i.displayName = i.displayName == "a-changed" ? "a" : "a-changed"; Combo.this.repaint(); } } } private static class Item { private String displayName; private Item(String displayName) { this.displayName = displayName; } public String toString() { return displayName; } } } [CODE] | ||||
|
投稿日時: 2005-05-12 12:43
今度こそ(だめだったらあきらめます。すみません)。
| ||||
|
投稿日時: 2005-05-12 13:41
Swing 関係で「表示をどうかしたい」というとき、たいていはコンポーネントのレンダラかエディタをいじります。
まずは JComboBox の API ドキュメントをよく読んで、 関連 Java Tutorial を読んで、 http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html それから ListCellRenderer と関連レンダラの API ドキュメントを読むといいかもしれません。 | ||||
|
投稿日時: 2005-05-12 19:11
ありがとうございます。
時間はかかると思いますが、やってみます。 |
1