私はSwingを使ってJavaアプリケーションを作成しています。これにはJTextFieldとJComboBoxが含まれています。JComboBoxには、最後に入力された単語と、これらの単語が入力された時刻が含まれます。時間のある文字列は、最後に入力された単語(標準スタイル)とは別のサイズと色で表示されます(小さく、明るい灰色)。そのため、JComboBoxの各要素には2つの異なるスタイルを使用する必要があります。どうやってやるの?要素がそれぞれ異なる2つのスタイルを持つJComboBoxを作成するにはどうすればよいですか?
0
A
答えて
0
簡単なアプローチは、それを達成するためのルックアンドフィールを選択することです。 もう一つの方法は、あなたがすべてのJComboBoxの要素のために必要な背景色と異なるのJLabelを作成して、それらを追加することができます:ここで
JLabel label = new JLabel("Some text");
label.setBackground(Color.grey);
label.setOpaque(true);
jComboBox.addItem(label);
JLabel anotherLabel = new JLabel("Another text");
anotherLabel.setBackground(Color.white);
anotherLabel.setOpaque(true);
jComboBox.addItem(anotherLabel);
1
は一例です:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.util.Date;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class ComboSample implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new ComboSample());
}
@Override
public void run() {
JFrame frm = new JFrame("Combo example");
final JTextField fld = new JTextField(20);
TextData[] data = new TextData[]{new TextData("First", new Date(System.currentTimeMillis() - 100000)),
new TextData("Second", new Date(System.currentTimeMillis() - 200000)),
new TextData("Third", new Date(System.currentTimeMillis() - 300000)),
new TextData("Fourth", new Date(System.currentTimeMillis() - 400000))};
JComboBox<TextData> cb = new JComboBox<>(data);
cb.setSelectedItem(null);
cb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
TextData td = (TextData) cb.getSelectedItem();
if (td != null) {
fld.setText(td.getText());
}
}
});
frm.add(fld);
frm.add(cb, BorderLayout.EAST);
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.pack();
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}
private static class TextData {
private static final DateFormat FORMAT = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
private final String text;
private final Date timestamp;
public TextData(String text, Date timestamp) {
this.text = text;
this.timestamp = timestamp;
}
public String getText() {
return text;
}
@Override
public String toString() {
return "<html>" + text + " <span style=\"color:#D3D3D3\"><i>" + FORMAT.format(timestamp) + "</i></span></html>";
}
}
}
関連する問題
- 1. それぞれに1つのスタイルシートを持つ2つの異なるレイアウト
- 2. 2つのパイプラインとそれぞれ異なる認証を持つWeb API
- 3. javaScriptで2つの要素を含むdivを作成するにはどうすればよいですか?
- 4. 1つのレールアプリケーション、2つのドメイン、それぞれ異なるセッション
- 5. 異なる値を持つ2つのnsarrayを比較するにはどうすればよいですか?
- 6. Javaで2つの要素間の関係を作成するにはどうすればよいですか?
- 7. 2つの要素間にCSS属性スワッパを作成するにはどうすればよいですか?
- 8. 異なる数の引数を持つオブジェクトを作成するにはどうすればよいですか?
- 9. 2つの異なる親からmavenモジュールを作成するにはどうすればよいですか?
- 10. 2つの異なる要素を1つの値に基づいてスタイル付けするにはどうすればよいですか?
- 11. onItemClickListener:各ビューで2つの異なるリスナーを作成するにはどうすればよいですか?
- 12. 関連するJComboboxをいくつか作成するにはどうすればよいですか?
- 13. 2つの異なるビューの共有モデルを作成するにはどうすればよいですか?
- 14. アンドロイドの1つの要素に2つの異なるスタイルを適用するにはどうすればよいですか?
- 15. コアデータを持つ2つのテーブルのリクエストを作成するにはどうすればよいですか?
- 16. 2つのx軸を持つFigureを作成するにはどうすればよいですか?
- 17. 複数のNUnitテストアセンブリ。それぞれ異なる構成が必要です。一度にNUnitを実行するにはどうすればよいですか?
- 18. 2つの異なるタイプのオブジェクトを消費するが、単一のエンドポイントを持つサービスを作成するにはどうすればよいですか?
- 19. 要素を1つのみ含むリストでリストする要素を持つリストを作成するにはどうすればよいですか?
- 20. 通常の配列の2つのオフセットのそれぞれから連想配列を作成するにはどうすればよいですか?
- 21. それぞれに1つの属性しか持たないIDテーブルを生成するにはどうすればよいですか?
- 22. それぞれが独自の値を持つ配列を作成する
- 23. jQueryのは、私がする必要がどのような異なるIDを持つ2つの要素
- 24. 2つの異なるデバイス間でクロックセッションを維持するにはどうすればよいですか?
- 25. 最初のリストの対応する要素で2つの異なるリストを作成するにはどうすればよいですか?
- 26. jQueryスタイルを自分の要素より早く作成するにはどうすればよいですか?
- 27. Windows Phone 7でListBoxにバインドされた異なるデータモデルを持つ異なるスタイルのListBoxItemを設定するにはどうすればよいですか?
- 28. 1つの行に2つのdiv要素を配置するにはどうすればよいですか?
- 29. 1つのフォームと「新しい」アクションで2つの異なるクラスの2つのオブジェクトを作成するにはどうすればよいですか?
- 30. 2つの異なる行を1つの行にマージするにはどうすればよいですか?
[コンボボックスを使用する方法](https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html)、[カスタムレンダラの提供](https://docs.oracle.com/javase/tutorial/uiswing/components/ combobox.html#renderer) – MadProgrammer