情報リンク付きのJradioボタン
-
19-09-2019 - |
質問
Jradiobuttonsのセットがあり、それぞれの隣に、クリックするとラジオボタンの横にあるテキストに関する情報が記載された新しいウィンドウが開くようになります。ラジオボタンの横にあるLittle 'i'ラベルを揃えるために使用するのに最適なコンポーネントは何ですか?
解決
スタイルでこれを行うためのいくつかの可能性があります。
最も単純なものは明らかにaを置くことです JButton
ラジオボタンの横にある「i」画像があります。右のレイアウトマネージャーを使用します(GridBagLayout
もちろん)を使用すると、両方を簡単に整列できます。
もう1つは、ラジオボタンにクライアントプロパティを設定し、ラジオボタンレンダラー(Look'n'feelで)を使用して、このクライアントプロパティを使用して、ボタンの横にある「i」アイコンを表示します。残念ながら、必要に応じて画像をインキュアするためにラジオボタンの境界を正しく管理する必要があるため、少し難しいTOP実装です(LNFでも達成されますが、それほど簡単ではありません)。
他のヒント
あなたの画像をasとして渡します javax.swing.ImageIcon
のコンストラクターに JRadioButton
. 。次に、ボタンのマウスクリックを聞いて、マウスポインターの座標が画像の境界内にあるかどうかを確認します。
Jlabelのようなものは、問題の「i」部分のコンポーネントのタイプに最も役立つと思います。 Jlabelsは、すべてのコンポーネントと同様に、マウスリスナーを追加することができ、そこからユーザーがクリックすると何かをトリガーするために必要なアクセスがあります。
以下のコードでは、GridbayLayoutを使用して空想しない場合は水平方向のアライメントを提供するために論理的な適合のように感じるため、単純なFlowLayoutを使用しました。最終的には、レイアウトのセットアップ方法に依存しますが、FlowLayoutのようなものがこれらの状況で役立ちます。
例については、次のコードをご覧ください。
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
final JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new FlowLayout());
JLabel l = new JLabel(new ImageIcon(Main.class.getResource("info.png")));
l.addMouseListener(new MouseAdapter(){
@Override
public void mouseReleased(MouseEvent e) {
JOptionPane.showMessageDialog(f, "Clicked");
}
});
p.add(new JRadioButton());
p.add(l);
f.add(p, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}
}