자바에서 약간의 텍스트 편집기를 만들 겠지만 다른 종류의 글꼴은 해당 글꼴의 콤보 상자에 표시됩니다. 이유는 사용자가 해당 글꼴을 볼 수 있기 때문입니다.자바에서 콤보 상자와 다른 글꼴
C#에 대한 콤보 상자 항목을 사용할 수 있다는 것을 알고 있습니다. 하지만 자바에 대해서는 몰랐습니다.
아무도 도와 줄 수 있습니까?
편집 : 당신이 당신의 콤보 상자에 대한 사용자 정의 렌더러를 구현해야처럼
자바에서 약간의 텍스트 편집기를 만들 겠지만 다른 종류의 글꼴은 해당 글꼴의 콤보 상자에 표시됩니다. 이유는 사용자가 해당 글꼴을 볼 수 있기 때문입니다.자바에서 콤보 상자와 다른 글꼴
C#에 대한 콤보 상자 항목을 사용할 수 있다는 것을 알고 있습니다. 하지만 자바에 대해서는 몰랐습니다.
아무도 도와 줄 수 있습니까?
편집 : 당신이 당신의 콤보 상자에 대한 사용자 정의 렌더러를 구현해야처럼
는 소리.
다음이 코드 자바 글꼴 선택
class CustomRenderer implements ListCellRenderer
{
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = new JLabel();
label.setFont(((Font) value).deriveFont(12f));
label.setText(((Font) value).getFontName());
return label;
}
}
메서드가 호출 될 때마다 레이블을 만드는 것은 불필요하고 낭비입니다. –
원래 대답은 올바른 아이디어를 제공합니다 ...하지만 Andrew는 정확합니다. 매번 새로운 JLabel을 만드는 것은 불필요합니다. 새 JLabel을 만들지 않으려면 CustomRenderer에서 ListCellRenderer를 구현하는 것 외에도 JLabel을 확장 한 다음 새 레이블 대신 "this"를 반환 할 수 있습니다. 또는 레이블을 CustomRenderer의 필드로 지정하십시오. – Amber
btw. 당신에게 아이콘을 두는 방법? –
사용자 정의 콤보 상자 : http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer
즉, 이런 식으로 뭔가 (콤보 상자에서 개체 가정이다 글꼴) : 여기에 자바 자습서를 참조하십시오 : 코드의
package stack;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class CustomComboBox {
JComboBox fontComboBox;
JFrame frame;
String fontName[];
Integer array[];
public CustomComboBox() {
JFrame.setDefaultLookAndFeelDecorated(true);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
fontName = ge.getAvailableFontFamilyNames();
array = new Integer[fontName.length];
for(int i=1;i<=fontName.length;i++) {
array[i-1] = i;
}
fontComboBox = new JComboBox(array);
ComboBoxRenderar renderar = new ComboBoxRenderar();
fontComboBox.setRenderer(renderar);
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(fontComboBox);
frame.pack();
frame.setVisible(true);
}
public class ComboBoxRenderar extends JLabel implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
int offset = ((Integer)value).intValue() - 1 ;
String name = fontName[offset];
setText(name);
setFont(new Font(name,Font.PLAIN,20));
return this;
}
}
public static void main(String args[]) {
new CustomComboBox();
}
}
예. 내 기사 인 [Java Font Chooser] (http://java-articles.info/articles/?p=272)를 읽어보십시오. –
@GilbertLeBlanc Oké,하지만 내가 중계하고 싶은 것은 Word와 마찬가지로 내 콤보 상자에서 글꼴 유형을 볼 수 있다는 것입니다. –
Java Swing 콤보 상자는 Word의 콤보 상자처럼 작동하지 않습니다. 다른 글꼴은 스윙 콤보 상자를 왜곡합니다. 그래서 메모장 용 글꼴 선택기를 만들었습니다. –