Это домашнее задание. Начало Java-класса. Все еще обертываю голову вокруг этого материала.JButton необходимо изменить текст JTextfield
Проект заключается в создании системы управления запасами.
У меня все выяснено, кроме как заставить эту кнопку изменять текст в JTextField. Он должен добавить информацию из массива продукта (в данном случае DVD). В книге рассказывается о различных способах управления такими вещами, как шрифт, положение и состояние JTextField, но не распространяется на форматирование или вызов метода для текста.
Вот пример того, что я хочу сделать, используя JTextArea. Это, по сути, то, что я хочу делать с моим JTextFields.
...
// setup the interface
JPanel panel = new JPanel();
txt = new JTextArea(15,40);
txt.setEditable(false);//user shouldn't change it
panel.add(txt);
JButton next = new JButton("Next");
panel.add(next);
getContentPane().add(panel);
displayDVD();
}
// view software
public void displayDVD() {
txt.setText("DVD Details:\n");
txt.append("Item number: " + inv.get(currentDisplay).getItem() + "\n");
txt.append("DVD name: " + inv.get(currentDisplay).getName() + "\n");
txt.append("Units in stock: " + inv.get(currentDisplay).getUnits() + "\n");
txt.append("Price: $" +
String.format("%.2f",inv.get(currentDisplay).getPrice()) + "\n");
txt.append("Total value: $" +
String.format("%.2f",inv.get(currentDisplay).value()) + "\n");
txt.append("Fee: $" + String.format("%.2f",inv.get(currentDisplay).fee()) + "\n\n");
txt.append("Total value: $" + String.format("%.2f",inv.value()));
}
А вот мой фактический код до сих пор
// GUI with navigation and file manipulation buttons
import javax.swing.*; // provides basic window features
import java.awt.event.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
public class AppGUI extends JFrame
{
private Inventory inv;
private int currentDisplay = 0;
private JPanel topButtonJPanel;
private JButton topButtons[];
private JPanel labelJPanel;
private JLabel labels[];
private JPanel fieldJPanel;
private JTextField fields[];
private JPanel buttonJPanel;
private JButton buttons[];
// LabelFrame constructor adds JLabels to JFrame
public AppGUI()
{
super("Inventory Program v.5");
setLayout(new BorderLayout()); // set frame layout
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// quit if the window is closed
// initialize values
RatedDVD d1 = new RatedDVD(1, "The Invisible Man", 0, 4999.99, "PG");
RatedDVD d2 = new RatedDVD(2, "The Matrix", 1, 13.01, "PG13");
RatedDVD d3 = new RatedDVD(3, "Se7en", 7, 11.11, "R");
RatedDVD d4 = new RatedDVD(4, "Oceans Eleven", 11, 9.02, "PG13");
RatedDVD d5 = new RatedDVD(5, "Hitch Hikers Guide to the Galaxy", 42, 10.00, "G");
// create inv and enter values
inv = new Inventory();
inv.add(d1);
inv.add(d2);
inv.add(d3);
inv.add(d4);
inv.add(d5);
inv.sort();
topButtons = new JButton[ 6 ]; // create topButtons array
topButtonJPanel = new JPanel(); // set up panel
topButtonJPanel.setLayout(new GridLayout(1, topButtons.length, 2, 2));
topButtons[0] = new JButton("Load file");
topButtons[1] = new JButton("Add");
topButtons[2] = new JButton("Modify");
topButtons[3] = new JButton("Delete");
topButtons[4] = new JButton("Search");
topButtons[5] = new JButton("Save");
for(int count=0;count<topButtons.length;count++){topButtonJPanel.add(topButtons[count]);}
//add(topButtonJPanel, BorderLayout.NORTH); // this is for next weeks assignment
labels = new JLabel[8];
labelJPanel = new JPanel();
labelJPanel.setLayout(new GridLayout(labels.length, 1));
labels[0] = new JLabel("Item ID");
labels[1] = new JLabel("Name");
labels[2] = new JLabel("Rating");
labels[3] = new JLabel("# in Stock");
labels[4] = new JLabel("Price");
labels[5] = new JLabel("Restocking Fee");//[DEBUG] ref actual Variable
labels[6] = new JLabel("Inventory Value with Fee (5%)");
labels[7] = new JLabel("Total Value with Fee(for all items)");
for(int count=0;count<labels.length;count++){labelJPanel.add(labels[count]);}
add(labelJPanel, BorderLayout.WEST);
fields = new JTextField[8];
fieldJPanel = new JPanel();
int spaces = 28;
fieldJPanel.setLayout(new GridLayout(labels.length, 1));
fields[0] = new JTextField("", spaces);
fields[1] = new JTextField("", spaces);
fields[2] = new JTextField("", spaces);
fields[3] = new JTextField("", spaces);
fields[4] = new JTextField("", spaces);
fields[5] = new JTextField("", spaces);
fields[6] = new JTextField("", spaces);
fields[7] = new JTextField("", spaces);
for(int count=0;count<fields.length;count++)
{
fields[count].setEditable(false);
fieldJPanel.add(fields[count]);
}
add(fieldJPanel, BorderLayout.EAST);
buttons = new JButton[ 5 ]; // create buttons array
buttonJPanel = new JPanel(); // set up panel
buttonJPanel.setLayout(new GridLayout(1, buttons.length, 2, 2));
buttons[0] = new JButton("First");
buttons[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (currentDisplay != 0)currentDisplay = 0; //advance to the end
}
});
buttons[1] = new JButton("Prev");
buttons[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (currentDisplay != 0)currentDisplay--; //advance to the end
else currentDisplay = (inv.size()-1);
}
});
Icon bug1 = new ImageIcon(getClass().getResource("bug1.gif"));
buttons[2] = new JButton(bug1);
buttons[3] = new JButton("Next");
buttons[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (currentDisplay < inv.size()-1)currentDisplay++; //advance to the end
else currentDisplay = 0; stkover
}});
buttons[4] = new JButton("Last");
buttons[4].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (currentDisplay != inv.size()-1)currentDisplay = inv.size()-1; //advance to the end
else currentDisplay = (inv.size()-1);
}
});
for(int count=0;count<buttons.length;count++){buttonJPanel.add(buttons[count]);}
add(buttonJPanel, BorderLayout.SOUTH);
}// end method
}// end class AppGUI
Любые подсказки советы или подталкивания оценены. Не делай этого для меня, хотя, пожалуйста.
Получил мой первый золотой значок только сейчас по этому вопросу 10k раз! – gooddadmike