JComboBoxを右揃えにしたいと思います。どうやってやるの? 誰かが前に私は、私はそれをどのように行うことができますかわからない「あなたはJLabelの#setHorizontalAlignmentを持つのJLabel(JLabel.RIGHT)することができJComboBoxのにレンダラを設定することができます」と述べましたか?JComboboxのテキストを右揃えにする方法はありますか?
7
A
答えて
13
誰かが前にあなたがすることができたのJComboBoxにレンダラを設定することができます」と述べたJLabelの持つJLabelの#setHorizontalAlignment(JLabel.RIGHT) "
はい、デフォルトのレンダラーはJLabelですので、カスタムレンダラーを作成する必要はありません。あなただけ使用することができます。
((JLabel)comboBox.getRenderer()).setHorizontalAlignment(JLabel.RIGHT);
6
さて、あなたはこのように、ListCellRendererを行うことができます。
import java.awt.Component;
import java.awt.ComponentOrientation;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.SwingUtilities;
public class ComboboxDemo extends JFrame{
public ComboboxDemo(){
JComboBox<String> comboBox = new JComboBox<String>();
comboBox.setRenderer(new MyListCellRenderer());
comboBox.addItem("Hi");
comboBox.addItem("Hello");
comboBox.addItem("How are you?");
getContentPane().add(comboBox, "North");
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private static class MyListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
return component;
}
}
public static void main(String [] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ComboboxDemo().setVisible(true);
}
});
}
}
+0
ありがとうございましたMeraman –
+0
私は方向を選択できません* CENTRE * !!左から右、右から左へ – shareef
0
これは、すべてのペイント(グラフィックス)のセッターを避けるために私のため
comboFromDuration.setRenderer(new DefaultListCellRenderer() {
@Override
public void paint(Graphics g) {
setHorizontalAlignment(DefaultListCellRenderer.CENTER);
setBackground(Color.WHITE);
setForeground(Color.GRAY);
setEnabled(false);
super.paint(g);
}
});
を素晴らしく、短い働い呼び出し、あなたはまた、匿名のコンストラクタブロックを使用することができます。
comboFromDuration.setRenderer(new DefaultListCellRenderer() {
{
setHorizontalAlignment(DefaultListCellRenderer.CENTER);
setBackground(Color.WHITE);
setForeground(Color.GRAY);
setEnabled(false);
}
});
+1、あなたの答えは私のものよりも優れています。 – UDPLover
Idk ...私はもっと良い答えはまだあなたの2つの答えの組み合わせだろうと思う。特に私自身のカスタムレンダラーを使用しているので、あなたの答えは私にとってより有益です。一方、私はあなたがModel(またはコンボボックス内のオブジェクトのtoString())で文字列のプレーンな配列を使用しているだけであれば、これを行う方がより便利だろう。 – searchengine27