Fra*_*ool 6 java unicode swing jtable font-size
Helo,我在很多地方寻找答案,但我没有解决方案,你能帮我解决这个问题吗?
我正在制作一个表格,我想要制作第一个具有更高字体大小的列.
例如,在第0列中,我希望字体大小为30,在列1-3上,我希望字体大小为13.
这是我的代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.*;
public class kanji_list extends JFrame {
kanji_list(){
JTable table = new JTable();
JScrollPane scroll = new JScrollPane();
Image icon = Toolkit.getDefaultToolkit().getImage("JLPT.jpg");
ImageIcon ima = new ImageIcon("JLPT.jpg");
DefaultTableModel model = new DefaultTableModel(get_data(), get_header());
table = new JTable(model){
public boolean isCellEditable(int rowIndex, int vColIndex){
return false;
}
};
JTableHeader th = table.getTableHeader();
TableColumnModel tcm = th.getColumnModel();
TableColumn column = null;
table.setFont(new Font("Microsoft JhengHei", Font.BOLD, 13));
for (int i = 0; i < 4; i++) {
column = table.getColumnModel().getColumn(i);
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
tcr.setHorizontalAlignment(SwingConstants.CENTER);
column.setCellRenderer(tcr);
if (i==0) {
column.setPreferredWidth(50);
}
else{
if(i==1){
column.setPreferredWidth(175);
}
else{
if(i==2){
column.setPreferredWidth(200);
}
else{
column.setPreferredWidth(875);
}
}
}
}
table.setRowHeight(table.getRowHeight()+30);
table.setModel(model);
scroll.add(table);
this.add(scroll);
this.setTitle("Katakana");
this.setSize(1350, 700);
this.setIconImage(icon);
this.setVisible(true);
this.setLocationRelativeTo(null);
scroll.setViewportView(table);
}
Object [][]get_data(){
Object data[][] = new Object[][]{
{"\u4e00", "Uno, 1", "ICHI, ITSU", "hito-, hitotsu"},
{"\u4e8c", "Dos, 2", "NI, JI", "futa, futatsu, futatabi"},
{"\u4e09", "Tres, 3", "SAN, JOU", "mi, mitsu, mittsu"},
{"\u99c5", "Estación", "EKI", ""}
};
return data;
}
String []get_header(){
String header [] = new String[]{"KANJI", "SIGNIFICADO", "LECTURA ON", "LECTURA KUN"};
return header;
}
}
Run Code Online (Sandbox Code Playgroud)
}
这是一个日语学习系统,第一列上的unicode上的Kanjis根本不可见我的13大小的字体,但是如果我把所有的表放在更高的大小上,所有其他列变得更大而且看起来不像精细.
我想我已经解释了我的问题.
我尝试过这么多不同的想法,但我没有得到任何结果.
kle*_*tra 13
在核心JTable中,你基本上需要一个自定义渲染器,它将Font设置为与DefaultTableCellRenderer的子类中的表的字体fi不同的东西.请注意,在实例化后在DefaultTableCellRenderer上设置一次字体将不起作用,因为它在每次调用getTableCellRendererComponent时都会重置.
JTable table = new JTable(new AncientSwingTeam());
// the default renderer uses the table's font,
// so set it as appropriate
table.setFont(fontToUseForAllColumnsExceptFirst);
// a custom renderer which uses a special font
DefaultTableCellRenderer r = new DefaultTableCellRenderer() {
Font font = fontToUseForFirstColumn;
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
setFont(font);
return this;
}
};
// doesn't work because the default renderer's font is reset
// to the table's font always
// r.setFont(font);
// set the custom renderer for first column
table.getColumnModel().getColumn(0).setCellRenderer(r);
Run Code Online (Sandbox Code Playgroud)
另一种选择是渲染器装饰方法,在SwingX项目中支持(偏见我无法抗拒:-)然后上面将是一个双线程(假设表是JXTable类型):
Highlighter hl = new FontHighlighter(font);
table.getColumnExt(0).setHighlighter(hl);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12972 次 |
| 最近记录: |