我有一个表格,其中包含选项卡“创建”,“打开”,“编辑”和“文本框:过滤器”。 我正在创建一些带有标题名称和文本内容的注释。 使用Heading TestCheck,文本内容采用以下格式。
嗨test1 ..................
嗨test2 ...................
嗨test3 ..................
this article:点击此链接以供参考
它在textArea中以此格式创建文本。但是当我点击Filter并选择Heading TestCheck时,它会刷新并减少到一行,它只显示中间行。
嗨,测试2 ................
When creating Text:点击此链接以供参考
以下是文字签订合同的方法代码。
package com.dc.d.diary.view;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.util.Date;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import com.dc.c.ProtomAbbreviation;
import com.dc.d.diary.model.DiaryNoteMO;
import com.dc.view.table.DataExtractor;
import com.dc.view.table.ExtendedDataExtractor;
import com.dc.view.table.SimpleProtomTable;
import com.dc.view.table.TableColumnAdjuster;
import com.dc.view.table.renderers.OddLineCellRenderer;
import com.dc.view.table.renderers.UserNameHandler;
import com.dc.view.util.ExtendedToolTipHandler;
import com.dc.view.util.ToolTipHandler;
import com.dc.view.util.Util;
import com.util.c.util.DateUtil;
import com.util.c.util.ListUtil;
/**
* This is a view, namely a table containing diary notes.
*/
public class DiaryTable extends SimpleProtomTable<DiaryNoteMO> {
private static final long serialVersionUID = 1L;
private static ProtomAbbreviation[] headers = {ProtomAbbreviation.DIARY_HEADING, ProtomAbbreviation.DIARY_TEXT,
ProtomAbbreviation.ISSUER, ProtomAbbreviation.ISSUED_DATE, ProtomAbbreviation.PHASE};
private TableColumnAdjuster columnAdjuster;
public DiaryTable() {
super(getDataExtractor(), getColumnHeaders(), false, false);
disableMaxWidthOnColumns();
columnAdjuster = new TableColumnAdjuster(getJTable());
columnAdjuster.setUseOnlyPreferredWidths(true);
columnAdjuster.disableMaxWidthSetting();
columnAdjuster.setTableCellMaxWidth(2000);
setDefaultRenderer(DiaryText.class, createRenderer(new OddLineCellRenderer(getDefaultRenderer(DiaryText.class))));
sortByColumn(3);
getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(final TableModelEvent e) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
calculateCellSizes();
}
});
}
});
}
private DefaultTableCellRenderer createRenderer(final OddLineCellRenderer parentRenderer) {
return new DefaultTableCellRenderer() {
private static final long serialVersionUID = 1L;
private JLabel innerTable = new JLabel("");
private JPanel empty = new JPanel();
private JPanel enclosingPanel;
private JPanel getEnclosingPanel() {
if (enclosingPanel == null) {
enclosingPanel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override
public void setSize(int width, int height) {
super.setSize(width, height);
}
@Override
public void setSize(Dimension d) {
super.setSize(d);
}
@Override
public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
return d;
}
@Override
public Dimension getMinimumSize() {
Dimension d = super.getMinimumSize();
return d;
}
};
enclosingPanel.setLayout(new BorderLayout());
enclosingPanel.setOpaque(true);
enclosingPanel.add(innerTable, BorderLayout.CENTER);
}
return enclosingPanel;
}
private JTextArea createTextArea() {
JTextArea txtArea = new JTextArea();
txtArea.setWrapStyleWord(true);
txtArea.setLineWrap(true);
txtArea.setOpaque(true);
JLabel label = new JLabel();
Font f = label.getFont();
txtArea.setFont(f);
return txtArea;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object valueIn, boolean isSelected, boolean hasFocus, int row, int column) {
Component parentComponent = parentRenderer.getTableCellRendererComponent(table, valueIn, isSelected, hasFocus, row, column);
Component result;
if (valueIn != null) {
String value = valueIn.toString();
value = value.replaceAll("(\r\n|\r|\n|\n\r)", "<br>");
value = "<html>" + value + "</html>";
////////
innerTable.setText(value);
innerTable.setBackground(parentComponent.getBackground());
innerTable.setForeground(parentComponent.getForeground());
int cWidth = table.getTableHeader().getColumnModel().getColumn(column).getWidth();
innerTable.setSize(new Dimension(cWidth, 1000));
result = getEnclosingPanel();
result.setBackground(parentComponent.getBackground());
} else {
empty.setBackground(parentComponent.getBackground());
result = empty;
}
return result;
}
};
}
private void calculateCellSizes() {
TableCellRenderer lRenderer = createRenderer(new OddLineCellRenderer(getDefaultRenderer(DiaryText.class)));
for (int row = 0; row < getProtomModel().getRowCount(); row++) {
DiaryNoteMO comPair = getProtomModel().getDataForRow(row);
int rowHeight = lRenderer.getTableCellRendererComponent(this, comPair.getText(), false, false, 0, 0).getPreferredSize().height;
setRowHeight(row, rowHeight);
}
}
public void setTableData(List<DiaryNoteMO> data) {
getProtomModel().setTableData(ListUtil.copyList(data));
sortTable(true);
columnAdjuster.adjustColumns();
calculateCellSizes();
}
public static List<String> getColumnHeaders() {
return ProtomAbbreviation.toStringList(headers);
}
public static DataExtractor<DiaryNoteMO> getDataExtractor() {
return new ExtendedDataExtractor<DiaryNoteMO>() {
@Override
public Object getValueForObjectInColumn(DiaryNoteMO value, int column) {
switch (column) {
case 0:
return value.getHeading();
case 1:
String text = value.getText();
//String text1 = text.replaceAll("<html>\r\n<br></html>", "\r\n");
return new DiaryText(text);
//return text.replaceAll("\r\n", " ");
case 2:
return UserNameHandler.getUserName(value.getModifiedBy());
case 3:
return DateUtil.formatDateAndTime(value.getCreationTime());
case 4:
return value.getPhaseName();
default:
return value;
}
}
@Override
public Class<?> getClassForColumn(int column) {
if (column == 1) {
return DiaryText.class;
}
if (column == 2) {
return Date.class;
}
return String.class;
}
@Override
public ToolTipHandler<DiaryNoteMO> getToolTipHandler() {
return new ExtendedToolTipHandler<DiaryNoteMO>() {
@Override
public String getToolTipForObjectInCol(DiaryNoteMO value, int column) {
switch (column) {
case 1:
return getToolTipForDairyText(value);
default:
return null;
}
}
private String getToolTipForDairyText(DiaryNoteMO item) {
return Util.formatToolTip(item.getText());
}
@Override
public String getHeaderToolTip(int column) {
return headers[column].getLongName();
}
};
}
};
}
private static class DiaryText {
private String text;
public DiaryText(String text) {
this.text = text;
}
@Override
public String toString() {
return text;
}
}
}
当我点击过滤器时,我必须避免文本内容的减少。在过滤时也应采用相同的格式。那么如何在线之间提供宽度来解决这个问题。
以下是班级。
:~$ sudo apt-get update
Command 'sudo' is available in '/usr/bin/sudo'
The command could not be located because '/usr/bin' is not included in the PATH environment variable.
sudo: command not found