java的label中如何实现换行输出?
3个回答
展开全部
swing中的大部分组件可以使用html的语法,JLabel的文本换行输入可以使用下面的语句:
MyJLable.setText("<html><p>第一行</p></p>第二行</p></html>");
参考资料是Sun的教程,可以看看
MyJLable.setText("<html><p>第一行</p></p>第二行</p></html>");
参考资料是Sun的教程,可以看看
参考资料: http://java.sun.com/docs/books/tutorial/uiswing/components/html.html
展开全部
Label label = new Label(len);
"len"就是生成的时候指定的LABEL的宽度..
label有方法可以获得到那个参数的..
我不记得了
if(label.getText.lenth==label.len){
label.setText=label.getText+'\n';
}
以上只是理论.
我试了.
行不通..
下面这个是我从别处找的..
可行..
你分析一下
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class C extends JFrame {
public C() {
JTable tbl = new JTable(new String[][]{{
"JTable 里单元格内容的显示器是 TableCellRenderer。",
"默认的显示器(DefaultTableCellRenderer)继承 JLabel 所以不方便多行显示。",
"要多行显示应该继承 JTextArea(参看下面的 TableCellTextAreaRenderer 类)。",
"当然,别忘了调用 JTable.setDefaultRenderer() 登记你的显示器。"}},
"A B C D".split(" "));
tbl.setDefaultRenderer(Object.class, new TableCellTextAreaRenderer());
add(new JScrollPane(tbl));
setSize(800, 200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) { new C(); }
}
class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {
public TableCellTextAreaRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// 计算当下行的最佳高度
int maxPreferredHeight = 0;
for (int i = 0; i < table.getColumnCount(); i++) {
setText("" + table.getValueAt(row, i));
setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
}
if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
table.setRowHeight(row, maxPreferredHeight);
setText(value == null ? "" : value.toString());
return this;
}
}
"len"就是生成的时候指定的LABEL的宽度..
label有方法可以获得到那个参数的..
我不记得了
if(label.getText.lenth==label.len){
label.setText=label.getText+'\n';
}
以上只是理论.
我试了.
行不通..
下面这个是我从别处找的..
可行..
你分析一下
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class C extends JFrame {
public C() {
JTable tbl = new JTable(new String[][]{{
"JTable 里单元格内容的显示器是 TableCellRenderer。",
"默认的显示器(DefaultTableCellRenderer)继承 JLabel 所以不方便多行显示。",
"要多行显示应该继承 JTextArea(参看下面的 TableCellTextAreaRenderer 类)。",
"当然,别忘了调用 JTable.setDefaultRenderer() 登记你的显示器。"}},
"A B C D".split(" "));
tbl.setDefaultRenderer(Object.class, new TableCellTextAreaRenderer());
add(new JScrollPane(tbl));
setSize(800, 200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) { new C(); }
}
class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {
public TableCellTextAreaRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// 计算当下行的最佳高度
int maxPreferredHeight = 0;
for (int i = 0; i < table.getColumnCount(); i++) {
setText("" + table.getValueAt(row, i));
setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
}
if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
table.setRowHeight(row, maxPreferredHeight);
setText(value == null ? "" : value.toString());
return this;
}
}
参考资料: http://zhidao.baidu.com/question/32334688.html?si=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的说得有道理……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询