Java 如何添加使滚动窗格工作?
我在这里制作了一个表单,在将其添加到我的内容窗格Global.uniConPane时,我一直在尝试将Global.table1添加到滚动窗格中。使用此当前代码,它只显示不带列名的表。当我尝试在下面添加这些代码时:Java 如何添加使滚动窗格工作?,java,jtable,jframe,jscrollpane,Java,Jtable,Jframe,Jscrollpane,我在这里制作了一个表单,在将其添加到我的内容窗格Global.uniConPane时,我一直在尝试将Global.table1添加到滚动窗格中。使用此当前代码,它只显示不带列名的表。当我尝试在下面添加这些代码时: Global.uniConPane.add(new JScrollPane(Global.table1)); 它没有显示任何内容。这组代码的目的是在销售新商品时添加新行。我希望能够添加滚动窗格,但我无法使其工作 private static void addS
Global.uniConPane.add(new JScrollPane(Global.table1));
它没有显示任何内容。这组代码的目的是在销售新商品时添加新行。我希望能够添加滚动窗格,但我无法使其工作
private static void addSalesForm() throws IOException {
Global.UniFrameTitle = "Clinic Inventory Manager";
Global.uniConPane.setOpaque(true);
Global.uniConPane.setBackground(Color.WHITE);
Global.uniConPane.setLayout(null);
Global.chosen="no";
headerFunction();
loggedIn();
menuFunction();
Border border = BorderFactory.createTitledBorder("Select Product");
Border border1 = BorderFactory.createLineBorder(Color.black);
Global.superGroup.setBorder(border);
Global.superGroup.setSize(740,80);
Global.superGroup.setLocation(20,92);
Global.model1 = new DefaultTableModel();
Global.model1.addColumn("Product Name");
Global.model1.addColumn("Price");
Global.model1.addColumn("Quantity");
Global.model1.addColumn("Subtotal");
Global.table1 = new JTable(Global.model1);
Global.table1.setSize(490,350);
Global.table1.setLocation(22,190);
Global.table1.setBorder(border1);
JLabel pro = new JLabel("<html><font color='black'>Product Name<br /></font></html>");
pro.setSize(200,15);
pro.setLocation(50,117);
JLabel pri = new JLabel("<html><font color='black'>Price<br /></font></html>");
pri.setSize(200,15);
pri.setLocation(265,117);
JLabel sto = new JLabel("<html><font color='black'>Item On Hand<br /></font></html>");
sto.setSize(200,15);
sto.setLocation(385,117);
JLabel count = new JLabel("<html><font color='black'>Quantity<br /></font></html>");
count.setSize(200,15);
count.setLocation(505,117);
itemDropDownList();
Global.itemList.setEditable(true);
Global.itemList.setSize(200, 20);
Global.itemList.setLocation(50,135);
JButton addProduct = new JButton("Add Item");
addProduct.setSize(100,20);
addProduct.setLocation(621,135);
new clinicInventorySystem2(Global.itemList);
Global.unitPrice = new JTextField();
Global.unitPrice.setBorder(BorderFactory.createLineBorder(Color.black));
Global.unitPrice.setSize(100,20);Global.unitPrice.setLocation(265,135);
Global.unitPrice.setHorizontalAlignment(JTextField.CENTER);
Global.quantity = new JTextField();
Global.quantity.setBorder(BorderFactory.createLineBorder(Color.black));
Global.quantity.setSize(100,20);Global.quantity.setLocation(385,135);
Global.quantity.setHorizontalAlignment(JTextField.CENTER);
Global.quan = new JTextField();
Global.quan.setBorder(BorderFactory.createLineBorder(Color.black));
Global.quan.setSize(100,20);Global.quan.setLocation(505,135);
Global.quan.setHorizontalAlignment(JTextField.CENTER);
Global.uniConPane.add(Global.unitPrice);
Global.uniConPane.add(Global.quantity);
Global.uniConPane.add(Global.quan);
Global.uniConPane.add(pro);
Global.uniConPane.add(pri);
Global.uniConPane.add(sto);
Global.uniConPane.add(count);
Global.uniConPane.add(addProduct);
Global.uniConPane.add(Global.superGroup);
Global.uniConPane.add(Global.itemList);
Global.uniConPane.add(Global.table1);
addProduct.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
Global.t2 = Integer.parseInt(Global.quan.getText());
Global.subt = Global.t1 * Global.t2;
String temp = ""+Global.subt;
String[] itemize = { Global.valueItem, Global.unitPrice.getText(), Global.quan.getText(),temp };
Global.model1.addRow(itemize);
}
});
Global.itemList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JComboBox cb = (JComboBox)e.getSource();
Global.valueItem = (String)cb.getSelectedItem();
Global.chosen = "yes";
Global.valueItemPass = Global.valueItem;
System.out.println(Global.valueItem);
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Global.database =
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\\floresClinic.accdb;";
Global.conn = DriverManager.getConnection(Global.database, "", "");
Global.s = Global.conn.createStatement();
Global.rs = Global.s.executeQuery("SELECT * FROM medItem WHERE productID = '" + Global.valueItem+"' ");
int cou = 0;
Integer tempVar=0;
while(Global.rs.next())
{
tempVar=Integer.parseInt(Global.rs.getString("itemID"));
String s1 = Global.rs.getString("unitPrice");
Global.t1=Integer.parseInt(s1);
Global.unitPrice.setText(s1);
Global.unitPrice.setEditable(false);
cou++;
}
Global.rs = Global.s.executeQuery("SELECT * FROM medInventory WHERE itemID = " + tempVar);
cou = 0;
while(Global.rs.next())
{
Global.quantity.setText(Global.rs.getString("qty"));
Global.quantity.setEditable(false);
cou++;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
});
Global.uniConPane.add(Global.logLabel);
Global.uniConPane.add(Global.bg);
Global.uniFrame.setJMenuBar(Global.menuBar);
Global.uniFrame.setTitle(Global.UniFrameTitle);
Global.uniFrame.setSize(800, 650);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int) ((dimension.getWidth() - Global.uniFrame.getWidth()) / 2);
int y = (int) ((dimension.getHeight() - Global.uniFrame.getHeight()) / 2);
Global.uniFrame.setLocation(x, y-10);
Global.uniFrame.setContentPane(Global.uniConPane);
Global.uniFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Global.uniFrame.setVisible(true);
}
如果我的代码有点难理解,我真的很抱歉。但我希望有人能帮助我使滚动窗格正常工作。尝试创建一个。摆脱Global.uniConPane.addGlobal.table1;并将其替换为Global.uniConPane.addnew JScrollPaneGlobal.table1;。看起来您使用的是静态引用,这是一个非常糟糕的主意,尤其是在GUI环境中,在GUI环境中,您可能需要同时显示一个组件的多个实例。@当我将其更改为您的建议时,程序员说该表不可见。没有提示错误,但它不会显示表。这是因为这是一个更大问题的症状。避免使用空布局。对于将在不同平台/操作系统上更改其大小的组件,您无法控制影响其大小要求/决策的因素