J'utilise GridBagLayout pour positionner les composants GUI. J'ai utilisé un Jtable à l'intérieur d'un JFrame. Mais la table ne correspond pas au cadre. Il apparaît comme suit. Quand je fais glisser le cadre, il montre la table.Comment définir la taille de Jtable en utilisant GridBagLayOut
Voici mon code. J'ai utilisé ceci comme un Jframe pop-up à un bouton listner.
public class ViewPrescriptionHistory extends JFrame{
private GridBagConstraints gridbBagConstraints;
private JTable drugDetailsTable;
HistroyTableModel drugDetailsTabelModel = new HistroyTableModel();
public ViewPrescriptionHistory() {
this.setLayout(new GridBagLayout());
this.setSize(500, 500);
this.pack();
initialize();
}
private void initialize() {
gridbBagConstraints = new GridBagConstraints();
gridbBagConstraints.insets = new Insets(10, 0, 10, 0);
gridbBagConstraints.ipady = 10;
gridbBagConstraints.ipadx = 10;
drugDetailsTable = new JTable(drugDetailsTabelModel);
drugDetailsTable.setPreferredScrollableViewportSize(new Dimension(600, 100));
drugDetailsTable.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(drugDetailsTable);
scrollPane.setBounds(5, 218, 884, 194);
this.add(scrollPane);
}
}
Here is my table model. I used Abstract Table model.
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import assignment3.prescriptionsystem.model.HistoryModel;
public class HistroyTableModel extends AbstractTableModel{
private String[] columnNames = { "Doctor Name", "Date", "Drug Name", "Form" , "Dosage" };
List<HistoryModel> historyList = new ArrayList<HistoryModel>();
public String getColumnName(int column) {
return columnNames[column];
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return historyList.size();
}
public void reloadDrugList(List<HistoryModel> drugsData) {
historyList= drugsData;
fireTableDataChanged();
}
public Object getValueAt(int rowIndex, int columnIndex) {
HistoryModel drugData = historyList.get(rowIndex);
switch (columnIndex) {
case 0:
return drugData.getDocName();
case 1:
return drugData.getDate();
case 2:
return drugData.getDrugName();
case 3:
return drugData.getFrom();
case 4:
return drugData.getDosage();
default:
return null;
}
}
}
Voici ma classe de modèle
public class HistoryModel {
String docName;
String date;
String drugName;
String dosage;
String from;
public String getDocName() {
return docName;
}
public void setDocName(String docName) {
this.docName = docName;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getDrugName() {
return drugName;
}
public void setDrugName(String drugName) {
this.drugName = drugName;
}
public String getDosage() {
return dosage;
}
public void setDosage(String dosage) {
this.dosage = dosage;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
}
Comment résoudre ce problème?
Nous ne pouvons pas compiler ce code car nous n'avons pas 'HistroyTableMo del'. Voir [mcve]. – user1803551