Java 如何将用户的输入从JTextFIeld设置到JTable,';我的代码不起作用
我需要从用户输入的项目中获取名称、姓氏等信息,以便保存到Jtable,我有table和jtextfield,但当用户获取输入信息时,他们不会保存到table。 该表是显示的,但不是用户输入的。 这是我的密码:Java 如何将用户的输入从JTextFIeld设置到JTable,';我的代码不起作用,java,swing,user-interface,jtable,jtextfield,Java,Swing,User Interface,Jtable,Jtextfield,我需要从用户输入的项目中获取名称、姓氏等信息,以便保存到Jtable,我有table和jtextfield,但当用户获取输入信息时,他们不会保存到table。 该表是显示的,但不是用户输入的。 这是我的密码: enter code here public class Projektni extends JFrame { public final JTextField ime = new JTextField(10); public final JTextField prezime = new J
enter code here public class Projektni extends JFrame {
public final JTextField ime = new JTextField(10);
public final JTextField prezime = new JTextField(10);
public final JTextField index = new JTextField(10);
public DefaultListModel podaci = new DefaultListModel();
public JList lista = new JList(podaci);
String kolone[] = {"ID","Name","Age"};
//prazan konstruktor gde implementiramo i definisemo dugmice,polja za upisivanje podataka i osluskivace
public Projektni()
{
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
String nextRowId = Integer.toString(model.getRowCount());
model.addColumn("Ime");
model.addColumn("Prezime");
model.addColumn("Indeks");
model.addRow((new Object[] {
nextRowId,
ime.getText(),
prezime.getText(),
index.getText()}
));
repaint();
JPanel pane2=new JPanel (new GridLayout(6, 7));
pane2.add(table);
pane2.setVisible(true);
ime.setPreferredSize(new Dimension(200,80));
prezime.setPreferredSize(new Dimension(200,80));
index.setPreferredSize(new Dimension(150,40));
JPanel panel=new JPanel (new GridLayout(6, 7));
panel.add(new JLabel("Ime studenta:"));
panel.add(ime);
panel.add(new JLabel("Prezime studenta:"));
panel.add(prezime);
panel.add(new JLabel("Broj indeksa studenta:"));
panel.add(index);
panel.setBackground(Color.cyan);
String[] seminari = {"Microsoft","MAC","Java"};
final JComboBox cek = new JComboBox(seminari);
panel.add(cek);
JButton upisibtn=new JButton("Upisi");
upisibtn.setPreferredSize(new Dimension(30,30));
JTabbedPane tab = new JTabbedPane();
getContentPane().add(tab);
tab.add("Tab1",panel);
tab.add("Tab2",pane2);
upisibtn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
try{
String p=nazivZaUnosNaziva()+" "+nazivZaUnosPrezimena()+" "+nemaIndeX()+" "+cek.getSelectedItem()+"\n";
String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
Upisi.upisi(s);
}
catch(NemaNaziv|NemaIndeks|NemaPrezime ex){
JOptionPane.showMessageDialog(null, ex);
}
}
}
);
//Dugme prikazi ,koji prikazuje upisane podatke preko klase citaj.
JButton citajbtn=new JButton("Prikazi");
citajbtn.setPreferredSize(new Dimension(30,30));
citajbtn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
for(String s:Citaj.citaj())
podaci.addElement(s);
}
});
//Dodavanje komponenata na panel.
panel.add(upisibtn);
panel.add(citajbtn);
panel.add(lista);
}
//Vraca string naziva studenta,ukoliko nije upisan vraca izuzetak
public String nazivZaUnosNaziva() throws NemaNaziv {
String naziv = ime.getText();
if (naziv.equals("")) {
throw new NemaNaziv("Niste uneli naziv studenta. ");
}
return naziv;
}
//Vraca string prezime studenta,ukoliko nije upisan vraca izuzetak
public String nazivZaUnosPrezimena() throws NemaPrezime {
String prez = prezime.getText();
if (prez.equals("")) {
throw new NemaPrezime("Niste uneli prezime studenta. ");
}
return prez;
}
//Vraca string index studenta,ukoliko nije upisan vraca izuzetak
public String nemaIndeX() throws NemaIndeks {
String indeks = index.getText();
if (indeks.equals("")) {
throw new NemaIndeks("Niste unelii ndeks studenta. ");
}
return indeks;
}
//pokretacki metod
public static void main(String[] args) {
Projektni tp = new Projektni();
tp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tp.setVisible(true);
tp.setSize(600, 800);
}
}
执行上述代码时,文本字段不包含任何文本
如果希望用户输入文本,然后将文本添加到表中,则需要向GUI中添加一个JButton。然后,当用户单击按钮时,您可以从文本字段中获取文本,并向TableModel添加新行
执行上述代码时,文本字段不包含任何文本
如果希望用户输入文本,然后将文本添加到表中,则需要向GUI中添加一个JButton。然后,当用户单击按钮时,您可以从文本字段中获取文本,并向TableModel添加新行
执行上述代码时,文本字段不包含任何文本
如果希望用户输入文本,然后将文本添加到表中,则需要向GUI中添加一个JButton。然后,当用户单击按钮时,您可以从文本字段中获取文本,并向TableModel添加新行
执行上述代码时,文本字段不包含任何文本
如果希望用户输入文本,然后将文本添加到表中,则需要向GUI中添加一个JButton。然后,当用户单击按钮时,您可以从文本字段中获取文本,并向TableModel添加新行。您的代码有许多未显示的未解析代码引用,这意味着它将不会为我们编译或运行,因此我们无法重现您的代码问题。如果CAMKICR的答案(1 +它)不能解决你的问题,那么考虑花一点时间来创建和发布一个代码,它对未显示的代码有很多未解决的引用,这意味着它不会为我们编译和运行,因此我们不能用代码复制您的问题。如果CAMKICR的答案(1 +它)不能解决你的问题,那么考虑花一点时间来创建和发布一个代码,它对未显示的代码有很多未解决的引用,这意味着它不会为我们编译和运行,因此我们不能用代码复制您的问题。如果CAMKICR的答案(1 +它)不能解决你的问题,那么考虑花一点时间来创建和发布一个代码,它对未显示的代码有很多未解决的引用,这意味着它不会为我们编译和运行,因此我们不能用代码复制您的问题。如果CAMKICR的答案(1 +它)没有解决你的问题,那么考虑花一点时间来创建和发布一个感谢,你能给我一些简单的例子吗?@蓝精灵:当然你可以查阅一个JButt教程,至少尝试创建一个JButt,添加一个ActualListor到它,然后更新你的JTABLE,是吗?@BlueMaster:学习编程(以及生活中的大多数事情)的秘诀是能够学到一般的一课,然后将其应用到特定的环境中。如果您知道如何从一个JTextField获取文本,我无法想象您不知道如何从三个JTextField获取文本。这对我来说有点难以相信,因为它与1完全相同,只是你的代码中有三行而不是一行。
这对我来说有点难以相信,因为它与1完全相同,只是你的代码中有三行而不是一行。
我完全同意。@BlueMaster:好的,你得到了三行字符串,现在,您必须在actionPerformed方法中使用它们。继续前进。谢谢,你能给我举个简单的例子吗?@BlueMaster:你当然可以查阅JButton教程,至少尝试创建一个JButton,在其中添加一个ActionListener,然后更新你的JTable,对吗?@BlueMaster:学习编程的秘诀(以及生活中的大部分事情)就是能够学到一般的一课,然后应用到具体的环境中。如果您知道如何从一个JTextField获取文本,我无法想象您不知道如何从三个JTextField获取文本。这对我来说有点难以相信,因为它与1完全相同,只是你的代码中有三行而不是一行。这对我来说有点难以相信,因为它与1完全相同,只是你的代码中有三行而不是一行。
我完全同意。@BlueMaster:好的,你得到了三行字符串,现在,您必须在actionPerformed方法中使用它们。继续前进。谢谢,你能给我举个简单的例子吗?@BlueMaster:你当然可以查阅JButton教程,至少尝试创建一个JButton,在其中添加一个ActionListener,然后更新你的JTable,对吗?@BlueMaster:学习编程的秘诀(以及生活中的大部分事情)就是能够学到一般的一课,然后应用到具体的环境中。如果您知道如何从一个JTextField获取文本,我无法想象您不知道如何从三个JTextField获取文本。这对我来说有点难以相信,因为它与1完全相同,只是你的代码中有三行而不是一行。这对我来说有点难以相信,因为它与1完全相同,只是你的代码中有三行而不是一行。
我完全同意。@BlueMaster:好的,你得到了三行字符串,现在,您必须在actionPerformed方法中使用它们。继续前进。谢谢,你能给我举个简单的例子吗?@BlueMaster:你当然可以查阅JButton教程,至少尝试创建一个JButton,在其中添加一个ActionListener,然后更新你的JTable,对吗?@BlueMaster:学习编程的秘诀(以及生活中的大部分事情)就是能够学到一般的一课,然后应用到具体的环境中。如果您知道如何从一个JTextField获取文本,我无法想象您不知道如何获取
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
String nextRowId = Integer.toString(model.getRowCount());
model.addColumn("Ime");
model.addColumn("Prezime");
model.addColumn("Indeks");
model.addRow((new Object[] {
nextRowId,
ime.getText(),
prezime.getText(),
index.getText()}