我想用圖標替換單選按鈕列表中的文本。JRadioButton:如何通過IconImage替換文本?
我已經試過這樣:
rotateButton = new JRadioButton(rotateIcon.getImage());
但到了這個圖標替換單選按鈕和文本。我想保留單選按鈕並顯示圖像。
我該怎麼辦?
什麼我目前得到的是:
但我希望它這樣結束了:
我想用圖標替換單選按鈕列表中的文本。JRadioButton:如何通過IconImage替換文本?
我已經試過這樣:
rotateButton = new JRadioButton(rotateIcon.getImage());
但到了這個圖標替換單選按鈕和文本。我想保留單選按鈕並顯示圖像。
我該怎麼辦?
什麼我目前得到的是:
但我希望它這樣結束了:
我只是轉載使用這個源你描述的行爲:
import java.awt.Image;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.net.URL;
class RadioWithImage {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.gravatar.com/avatar/" +
"a1ab0af4997654345d7a949877f8037e?s=128");
Image image = ImageIO.read(url);
final ImageIcon imageIcon = new ImageIcon(image);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JRadioButton radioButton = new JRadioButton("A.T.", imageIcon);
JOptionPane.showMessageDialog(null, radioButton);
}
});
}
}
這似乎是我的錯誤,但我不記得看到收音機的圖標。他們應該怎麼看?
時間到達我的'黑箱'。
import javax.swing.*;
class RadioWithImage {
public static void main(String[] args) throws Exception {
String url = "http://www.gravatar.com/avatar/" +
"a1ab0af4997654345d7a949877f8037e?s=128";
final String html = "<html><body><img src='" +
url +
"' width=128 height=128>";
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JRadioButton radioButton = new JRadioButton(html);
JOptionPane.showMessageDialog(null, radioButton);
}
});
}
}
如果該技術將不起作用:
創建一個沒有文本的JRadioButton,並將JLabel放在它旁邊的圖像上。你也可以創建一個類來隱藏複雜性。
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.ChangeListener;
public class RadioButtonWithImage extends JPanel {
private JRadioButton radio = new JRadioButton();
private JLabel image;
public RadioButtonWithImage(Icon icon) {
image = new JLabel(icon);
add(radio);
add(image);
}
public void addToButtonGroup(ButtonGroup group) {
group.add(radio);
}
public void addActionListener(ActionListener listener) {
radio.addActionListener(listener);
}
public void addChangeListener(ChangeListener listener) {
radio.addChangeListener(listener);
}
public Icon getImage() {
return image.getIcon();
}
public void setImage(Icon icon) {
image.setIcon(icon);
}
} // end class RadioButtonWithImage
+1對於答@Eva – Krishna
沒有單選按鈕構造函數允許圖像作爲內容參數而不是文本。通過圖像替換單選按鈕的文本的唯一方法是生成html,並將其作爲參數傳遞給默認構造函數。
import javax.swing.*;
class RadioWithImage {
public static void main(String[] args) throws Exception {
URL url = Windows_ChordsGenerator.class.getResource("/images/img1.png");
final String html = "<html><body><img src='" + url.toString() +"'>";
JRadioButton radioButton = new JRadioButton(html);
}
}
很好的答案!這比@Andrew Thompson的答案更有用,因爲它使用的是與jar捆綁的圖像,而不是外部資源。 –
+1不錯。我總是看到你在gui-questions :) –
@Eng。 Fouad:我也看到他在大多數Swing的問題中看起來像mKorble是一個揮杆愛好者。 –
@ Eng.Fouad,因爲有很多樂趣,善良的人與和平FullFaces,並學習英語:-)對我來說,就像我知道的任何PL難度更大, – mKorbel