我目前正在完成一項作業,我必須創建一個應用程式,該應用程式使用動態資料來填充樹和串列。我之前曾嘗試將 main 方法放在這個類中,唯一一次看起來我可以編譯的是我是否將所有變數更改為靜態。我可以將我的 main 方法放在這個類中嗎(我可以放在哪里?)還是我需要另一個類?謝謝。
import javax.swing.DefaultListModel;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import Accounts.Client;
import Accounts.ClientLoader;
import Accounts.Account;
import Accounts.Bootstrap;
import Accounts.Portfolio;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTree;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import javax.swing.JTextArea;
public class FormWindow {
protected JFrame frame;
private DefaultListModel < String > clientDetail = new DefaultListModel < String > ();
private Client person;
private JTextField firstName;
private JTextField lastName;
private JTextField phoneNumber;
public FormWindow(Client person) {
this.person = person;
initialize();
}
private void initialize() {
frame = new JFrame("Client Manager");
frame.setBounds(100, 100, 903, 719);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setHorizontalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy
(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBounds(10, 11, 619, 192);
frame.getContentPane().add(scrollPane);
JTextArea textArea = new JTextArea();
scrollPane.setViewportView(textArea);
firstName = new JTextField(person.getFirstName());
firstName.setBounds(730, 11, 144, 26);
frame.getContentPane().add(firstName);
firstName.setColumns(10);
lastName = new JTextField(person.getLastName());
lastName.setBounds(730, 66, 144, 26);
frame.getContentPane().add(lastName);
lastName.setColumns(10);
phoneNumber = new JTextField(person.getPhoneNumber());
phoneNumber.setBounds(730, 123, 144, 26);
frame.getContentPane().add(phoneNumber);
phoneNumber.setColumns(10);
JButton btnNewButton = new JButton("Update Interface");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
person.setFirstName(firstName.getText());
person.setLastName(lastName.getText());
person.setPhoneNumber(phoneNumber.getText());
repaintForm();
}
});
btnNewButton.setBounds(639, 168, 235, 35);
frame.getContentPane().add(btnNewButton);
JLabel lblNewLabel = new JLabel("First Name");
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 15));
lblNewLabel.setBounds(649, 11, 71, 20);
frame.getContentPane().add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("Last Name");
lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 15));
lblNewLabel_1.setBounds(649, 70, 71, 14);
frame.getContentPane().add(lblNewLabel_1);
JLabel lblNewLabel_2 = new JLabel(" Phone");
lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 15));
lblNewLabel_2.setBounds(634, 127, 71, 14);
frame.getContentPane().add(lblNewLabel_2);
JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setHorizontalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane_1.setBounds(10, 214, 425, 436);
frame.getContentPane().add(scrollPane_1);
//needs work: TREE
DefaultMutableTreeNode portfolios = new DefaultMutableTreeNode("Portfolios");
JTree tree = new JTree(portfolios);
scrollPane_1.setViewportView(tree);
JScrollPane scrollPane_2 = new JScrollPane();
scrollPane_2.setHorizontalScrollBarPolicy
(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane_2.setBounds(445, 214, 429, 436);
frame.getContentPane().add(scrollPane_2);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("Client");
menuBar.add(mnNewMenu);
JMenuItem mntmNewMenuItem = new JMenuItem("Load Client");
mntmNewMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
mnNewMenu.add(mntmNewMenuItem);
JMenuItem mntmNewMenuItem_1 = new JMenuItem("Save Client");
mnNewMenu.add(mntmNewMenuItem_1);
JMenu mnNewMenu_1 = new JMenu("Portfolios");
menuBar.add(mnNewMenu_1);
JMenuItem mntmNewMenuItem_2 = new JMenuItem("Add Portfolio");
mnNewMenu_1.add(mntmNewMenuItem_2);
JMenuItem mntmNewMenuItem_3 = new JMenuItem("Remove Portfolio");
mnNewMenu_1.add(mntmNewMenuItem_3);
JMenu mnNewMenu_2 = new JMenu("Accounts");
menuBar.add(mnNewMenu_2);
JMenuItem mntmNewMenuItem_4 = new JMenuItem("Add Account");
mnNewMenu_2.add(mntmNewMenuItem_4);
JMenuItem mntmNewMenuItem_5 = new JMenuItem("Remove Account");
mnNewMenu_2.add(mntmNewMenuItem_5);
}
void repaintForm() {
clientDetail.clear();
clientDetail.addElement("First Name: " person.getFirstName());
clientDetail.addElement("Last Name: " person.getLastName());
clientDetail.addElement("Phone Number: " person.getPhoneNumber());
clientDetail.addElement("Total Value: " person.getClientPortfolioValue());
clientDetail.addElement("Portfolio Count: " person.getPortfolioCount());
clientDetail.addElement("Portfolio Names: " person.getClientPortfolioNames());
}
}
uj5u.com熱心網友回復:
考慮在 main 方法中創建一個 FormWindow 實體。
將 main 放入 FormWindow 類中
在 main 方法中通過“new”運算子創建實體
class FormWindow { public static void main(String[] args) { FormWindow form = new FormWindow(...); } ... }
uj5u.com熱心網友回復:
在靜態方法中,您只能呼叫其他靜態方法。這就是編譯器將您的方法更改為靜態的原因。您想要的是使用 main 方法創建另一個類,然后創建 FormWindow 類的物件。由于您的建構式需要一個 Client 物件,因此您需要先創建該物件。
FormWindow fw = new FormWindow(someClientObject)
uj5u.com熱心網友回復:
您需要另一個類并呼叫 FormWindow 類的新實體,如果變數是靜態的,那么您需要將回傳值的方法分配給該特定靜態變數
uj5u.com熱心網友回復:
我認為您必須為此類創建一個默認建構式,或者提供一些默認值:
public class FormWindow {
public FormWindow() {
Client personWithDefaultValues = new Client();
//Fill personWithDefaultValues with some data here
}
public static void main(String[] args) {
FormWindow h = new FormWindow();
h.initialize();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/383968.html
上一篇:在asp.netcoremvc上安裝tailwindcss
下一篇:QtWidget沒有顯示
