Java 我的JTable没有';我没有出现
我不熟悉JTable,或者GUI,但我被指派在GUI中构建一个接收程序。我设法把基本的东西弄好了,但我的桌子看起来糟透了。我需要关于如何正确显示表格的帮助Java 我的JTable没有';我没有出现,java,swing,jtable,layout-manager,grid-layout,Java,Swing,Jtable,Layout Manager,Grid Layout,我不熟悉JTable,或者GUI,但我被指派在GUI中构建一个接收程序。我设法把基本的东西弄好了,但我的桌子看起来糟透了。我需要关于如何正确显示表格的帮助 public static void main (String[] args) { ArrayList <item> lol= new ArrayList <item>(); item ayam = new item("ayam",5678); item kambing= new
public static void main (String[] args)
{
ArrayList <item> lol= new ArrayList <item>();
item ayam = new item("ayam",5678);
item kambing= new item("kambing",5014);
item buaya= new item("buaya",3000);
item bocoranquiz= new item("bocoranquiz",5000);
lol.add(ayam);
lol.add(kambing);
lol.add(buaya);
lol.add(bocoranquiz);
JFrame frame= new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(3, 0));
frame.setSize(1000, 1000);
SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy");
String date = sdf.format(new Date());
JComboBox combo1= new JComboBox();
combo1.setPreferredSize(new Dimension(10, 10));
combo1.addItem(ayam.getname());
combo1.addItem(kambing.getname());
combo1.addItem(buaya.getname());
combo1.addItem(bocoranquiz.getname());
JLabel label1= new JLabel("Invoice no: ");
JLabel label2= new JLabel("Invoice Date : " + date);
JLabel label3= new JLabel("Item name " );
JLabel label4= new JLabel("Item Price ");
JLabel label5= new JLabel("Item Quantity : ");
JPanel panel1= new JPanel ();
panel1.setLayout(new GridLayout(3,0));
panel1.add(label1);
panel1.add(label2);
class inputListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
JComboBox<String> combo= (JComboBox<String>) event.getSource();
selected= (String) combo.getSelectedItem();
alpha=10;
if (selected.equals("ayam"))
{
alpha=5678;
}
else if (selected.equals("kambing"))
{
alpha=5014;
}
else if (selected.equals("buaya"))
{
alpha=3000;
}
else if (selected.equals("bocoranquiz"))
{
alpha=5000;
}
label3.setText("Item name " + selected);
label4.setText("Item quantity " + alpha);
}
}
ActionListener inputAct = new inputListener();
combo1.addActionListener(inputAct);
panel1.add(combo1);
JTextField tf = new JTextField();
JButton adda = new JButton("Add");
String[] columnNames= {"Name","Price","Quantity","Total"};
DefaultTableModel tablemodel= new DefaultTableModel(columnNames,0);
JTable table = new JTable(tablemodel);
JScrollPane scrollPanel = new JScrollPane(table);
class inputListener2 implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
quantity= Integer.parseInt(tf.getText());
double total= alpha * quantity;
Object[] data= {selected,alpha,quantity,total};
tablemodel.addRow(data);
}
ActionListener inputAct2 = new inputListener2();
adda.addActionListener(inputAct2);
JPanel panel2= new JPanel();
panel2.setLayout(new GridLayout(10,0));
panel2.add(label3);
panel2.add(label4);
panel2.add(label5);
panel2.add(tf);
panel2.add(adda);
panel2.add(scrollPanel);
frame.add(panel1);
frame.add(panel2);
frame.setVisible(true);
}
publicstaticvoidmain(字符串[]args)
{
ArrayList lol=新的ArrayList();
项目ayam=新项目(“ayam”,5678);
项目分类=新项目(“分类”,5014);
项目buaya=新项目(“buaya”,3000);
项目bocoranquiz=新项目(“bocoranquiz”,5000);
lol.add(ayam);
lol.add(kambing);
lol.add(buaya);
lol.add(bocoranquiz);
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的GridLayout(3,0));
框架。设置尺寸(10001000);
SimpleDataFormat sdf=新的SimpleDataFormat(“dd/M/yyyy”);
字符串date=sdf.format(new date());
JComboBox combo1=新的JComboBox();
combo1.setPreferredSize(新维度(10,10));
combo1.addItem(ayam.getname());
combo1.addItem(kambing.getname());
combo1.addItem(buaya.getname());
combo1.addItem(bocoranquiz.getname());
JLabel标签1=新的JLabel(“发票号”);
JLabel label2=新的JLabel(“发票日期:”+日期);
JLabel标签3=新的JLabel(“项目名称”);
JLabel标签4=新的JLabel(“项目价格”);
JLabel label5=新的JLabel(“项目数量”);
JPanel panel1=新的JPanel();
面板1.设置布局(新网格布局(3,0));
面板1.添加(标签1);
面板1.添加(标签2);
类inputListener实现ActionListener
{
已执行的公共无效操作(操作事件)
{
JComboBox组合=(JComboBox)event.getSource();
selected=(字符串)combo.getSelectedItem();
α=10;
如果(选定。等于(“ayam”))
{
α=5678;
}
else if(选定的。等于(“kambing”))
{
α=5014;
}
else if(选定的。等于(“buaya”))
{
α=3000;
}
else if(选定的.equals(“bocoranquiz”))
{
α=5000;
}
标签3.setText(“项目名称”+选定项);
标签4.setText(“项目数量”+alpha);
}
}
ActionListener inputAct=新建inputListener();
combo1.addActionListener(inputAct);
面板1.添加(组合1);
JTextField=新的JTextField();
JButton adda=新JButton(“添加”);
String[]columnNames={“名称”、“价格”、“数量”、“总计”};
DefaultTableModel tablemodel=新的DefaultTableModel(columnNames,0);
JTable table=新的JTable(tablemodel);
JScrollPane scrollPanel=新的JScrollPane(表);
类inputListener2实现ActionListener
{
已执行的公共无效操作(操作事件)
{
quantity=Integer.parseInt(tf.getText());
双倍总数=α*数量;
对象[]数据={选定,alpha,数量,总数};
tablemodel.addRow(数据);
}
ActionListener inputAct2=新的inputListener2();
adda.addActionListener(inputAct2);
JPanel panel2=新的JPanel();
面板2.设置布局(新网格布局(10,0));
面板2.添加(标签3);
面板2.添加(标签4);
面板2.添加(标签5);
第2组:添加(tf);
第2组:添加(adda);
面板2.添加(滚动面板);
框架。添加(面板1);
框架。添加(第2组);
frame.setVisible(true);
}
您的代码有点乱,但是,基本问题是您将网格布局设置为多行,例如
frame.setLayout(new GridLayout(3, 0));
应该是
frame.setLayout(new GridLayout(2, 0));
因为您只向框架添加了两个组件
同样地
panel2.setLayout(new GridLayout(10, 0));
应该是
panel2.setLayout(new GridLayout(6, 0));
请记住,GridLayout
将容器分成相等的部分,即使行/列中没有任何内容
您可能还需要考虑使用不同的布局管理器,例如“代码> GridBagLayout < /COD>”,或者根据您的基本需求来组合布局。
有关更多详细信息,请参阅。您的代码有点乱,但基本问题是您的GridLayout
设置为多行,例如
frame.setLayout(new GridLayout(3, 0));
应该是
frame.setLayout(new GridLayout(2, 0));
因为您只向框架添加了两个组件
同样地
panel2.setLayout(new GridLayout(10, 0));
应该是
panel2.setLayout(new GridLayout(6, 0));
请记住,GridLayout
将容器分成相等的部分,即使行/列中没有任何内容
您可能还需要考虑使用不同的布局管理器,例如“代码> GridBagLayout < /COD>”,或者根据您的基本需求来组合布局。
有关更多详细信息,请参阅。您能告诉我们桌子现在是什么样子吗?@JackWhiteIII底部看起来都被压扁了。您能告诉我们桌子现在是什么样子吗?@JackWhiteIII底部看起来都被压扁了