Ich kann nicht herausfinden, warum mein Code dazu führt, dass der untere JTextArea über die Grenzen des Fensters hinauswächst, in dem er sich befindet.
Ich habe die grafische Benutzeroberfläche mit WindowBuilder erstellt und viele verschiedene Möglichkeiten zur Begrenzung der Größe ausprobiert, aber ich kann einfach nicht herausfinden, warum sie über die Größe hinauswächst, die ich in der Entwurfsansicht von WindowBuilder festgelegt habe.
Dies ist mein Code:(Dies ist mein erstes Mal mit diesem Forum, bitte entschuldigen Sie Posting Fehler)
public class Reporter extends JFrame {
private static final long serialVersionUID = 1L;
class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private String[] columnNames;
private Object[][] data;
public MyTableModel(String[] columnNames) {
this.columnNames=columnNames;
this.data=new Object[0][columnNames.length];
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class<? extends Object> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
public void addRow(Object[] objs) {
Object[][] newData = new Object[this.getRowCount()+1][this.getColumnCount()];
for (int row=0; row<this.getRowCount(); row++) {
for (int col=0; col<this.getColumnCount(); col++) {
newData[row][col]=this.data[row][col];
}
}
for (int col=0; col<this.getColumnCount(); col++) {
newData[newData.length-1][col]=objs[col];
}
this.data=newData;
fireTableDataChanged();
}
public void setRow(int rowIndex, Object[] objs) {
for (int col=0; col<this.getColumnCount(); col++) {
this.data[rowIndex][col]=objs[col];
}
fireTableRowsUpdated(rowIndex, rowIndex);
}
}
private JTabbedPane bugTabPane;
private JScrollPane tableScrollPane;
private ArrayList<JTextArea> bugOuts;
private JScrollPane graphScrollPane;
private JTable table;
private JScrollPane announcerScrollPane;
private JTextArea announcerTextArea;
private GraphBox graphPane;
public Reporter() {
setBounds(100, 100, 903, 751);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
getContentPane().setLayout(new MigLayout("", "[grow]", "[200px:200px][200px:200px:200px][200px:200px:200px]"));
this.graphScrollPane = new JScrollPane();
this.graphScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
this.graphScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
getContentPane().add(this.graphScrollPane, "cell 0 0,grow");
this.graphPane = new GraphBox();
this.graphScrollPane.add(graphPane);
Attribute[] attributeNames=Attribute.values();
String[] otherColumnNames={"Name","Creator","Last Act"};
String[] columnNames = new String[attributeNames.length+otherColumnNames.length];
for (int i=0; i<otherColumnNames.length; i++) {
columnNames[i]=otherColumnNames[i];
}
for (int i=0; i<attributeNames.length; i++) {
columnNames[otherColumnNames.length+i]=attributeNames[i].toString();
}
this.tableScrollPane = new JScrollPane();
getContentPane().add(this.tableScrollPane, "cell 0 1,grow");
this.table = new JTable(new MyTableModel(columnNames));
this.tableScrollPane.setViewportView(this.table);
this.bugTabPane = new JTabbedPane(JTabbedPane.TOP);
getContentPane().add(this.bugTabPane, "cell 0 2,grow");
this.bugTabPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
this.announcerScrollPane = new JScrollPane();
this.announcerScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
this.announcerScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
this.bugTabPane.addTab("Announcer", null, this.announcerScrollPane, null);
this.announcerTextArea = new JTextArea(1, 40);
this.announcerTextArea.setMaximumSize(new Dimension(2147483647, 200));
this.announcerTextArea.setEnabled(false);
this.announcerScrollPane.setViewportView(this.announcerTextArea);
this.bugOuts = new ArrayList<JTextArea>();
pack();
}
public TableModel getTableModel() {
return this.table.getModel();
}
public void addTableRow(BugStepRecord bugStepRecord) {
Object[] rowObjs = new Object[this.table.getColumnCount()];
rowObjs[0] = bugStepRecord.getName();
rowObjs[1] = bugStepRecord.getCreator();
rowObjs[2] = bugStepRecord.getAct();
for (int i=0; i<bugStepRecord.getAttributeVals().length; i++) {
rowObjs[3+i] = bugStepRecord.getAttributeVals()[i];
}
MyTableModel myTableModel = (MyTableModel)this.table.getModel();
myTableModel.addRow(rowObjs);
}
public void updateTableRow(int rowIndex, BugStepRecord bugStepRecord) {
Object[] rowObjs = new Object[this.table.getColumnCount()];
rowObjs[0] = bugStepRecord.getName();
rowObjs[1] = bugStepRecord.getCreator();
rowObjs[2] = bugStepRecord.getAct();
for (int i=0; i<bugStepRecord.getAttributeVals().length; i++) {
rowObjs[3+i] = bugStepRecord.getAttributeVals()[i];
}
MyTableModel myTableModel = (MyTableModel)this.table.getModel();
myTableModel.setRow(rowIndex, rowObjs);
}
public JTextArea addBugTab(String name, Icon icon) {
final JTextArea textArea = new JTextArea(1, 40);
textArea.setEditable(false);
JScrollPane bugScrollPane = new JScrollPane();
bugScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
bugScrollPane.setViewportView(textArea);
this.bugOuts.add(textArea);
this.bugTabPane.addTab(name, icon, bugScrollPane, null);
return textArea;
}
}