我在某個地方,但現在我遇到了更大的障礙:我似乎無法理解如何創建一個偵聽器,將我的JLabel上的信息更改爲輸入並輸出存儲在我的JTextArea中的信息。GUI問題:甚至不知道從哪裏開始
這裏是我的代碼給你一個想法:
public class DisplayStudent extends JFrame {
private JMenuItem jmiConnect, jmiClose, jmiExit, jmiSearch, jmiClear;
private JPanel contentPane;
private JPanel contentPane2;
private JTextArea info;
private String information;
public JPanel contentPane() {
JPanel something = new JPanel(new BorderLayout());
//something.setLayout();
String information;
info = new JTextArea(4, 30);
info.setEditable(false);
info.setLineWrap(true);
info.setWrapStyleWord(true);
JPanel one = new JPanel();
one.setBackground(Color.WHITE);
one.setSize(50, 50);
one.add(info, BorderLayout.CENTER);
something.add(one, BorderLayout.NORTH);
JPanel two = new JPanel(new BorderLayout());
two.setBackground(null);
two.setSize(10, 10);
two.add(new JLabel(" No Connection "), BorderLayout.WEST);
two.add(new JLabel(" Number of Students = "), BorderLayout.EAST);
something.add(two);
something.setOpaque(true);
return something;
}
public static void GUI() {
JFrame frame = new JFrame("Display Student");
DisplayStudent panel = new DisplayStudent();
frame.setContentPane(panel.contentPane());
DisplayStudent bar = new DisplayStudent();
frame.setJMenuBar(bar.DisplayStudent());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 150);
frame.setVisible(true);
//frame.setJMenuBar(jmb);
}
public JMenuBar DisplayStudent() {
//Drop down menu
JMenuBar jmb = new JMenuBar();
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic('F');
jmb.add(fileMenu);
JMenu editMenu = new JMenu("Edit");
editMenu.setMnemonic('E');
jmb.add(editMenu);
//Buttons in menu - "File" menu
JMenuItem jmiConnect = new JMenuItem("Connect", 'C');
JMenuItem jmiClose = new JMenuItem("Close", 'L');
JMenuItem jmiExit = new JMenuItem("Exit", 'E');
fileMenu.add(jmiConnect);
fileMenu.add(jmiClose);
fileMenu.add(jmiExit);
//Buttons in menu - "Edit" menu
JMenuItem jmiSearch = new JMenuItem("Search", 'S');
JMenuItem jmiClear = new JMenuItem("Clear", 'B');
editMenu.add(jmiSearch);
editMenu.add(jmiClear);
jmiConnect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String database_name;
System.out.println("Please enter your database.");
Scanner input = new Scanner(System.in);
database_name = input.next();
}
});
jmiClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int reply = JOptionPane.showConfirmDialog(null, "Are you sure you want to quit?", "Question!", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, "Toodleloo!");
}
}
});
jmiExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
jmiSearch.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
jmiClear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
return jmb;
}
public static void main(String[] args) {
GUI();
}
}
我爲繼續諮詢遺憾。閱讀不足以理解這一點。我再次感謝你們的幫助。
好的,當我回去時,我得到了一個很大的錯誤。這裏是:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at displaystudent.DisplayStudent$1.actionPerformed(DisplayStudent.java:119)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:157)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
如果我問得太多,我很抱歉。我現在在我的智慧結束。
你可以使用'DocumentListener'監聽監視更改到'JTextArea',這是小重手和一些關於你想要達到什麼的更多信息會有幫助... – MadProgrammer
@MadProgrammer啊,我真的很抱歉。我想要實現的是一個有幾個JMenuItems的程序。其中一個JMenuItems(「Connect」)假設向用戶請求輸入,然後將該輸入存儲在database_name下,並將名稱傳輸給JLabel,將其從「無連接」更改爲「連接到數據庫名稱」,並顯示存儲在JTextArea中的信息。 – Zanpo
那麼'JTextArea#appendText'有什麼問題?您需要將「連接」標籤設置爲實例變量,以便您在需要時訪問它 – MadProgrammer