Hallo,
ich bin neu hier im Forum und hoffe das es der richtige bereich ist. also,
Ich arbeite zur Zeit mit grafischer Oberflächen in Java und habe folgendes Problem. Vereinfacht sieht mein Problem so aus:
Ich habe eine grafische Oberfläche mit einem JMenu (JMenuItem: "Neu" und "Beenden") und JButton "Verbinden". Wenn ich main methode aufrufe, soll am Anfang grafische Oberfläche gezeigt werden und "Verbinden" Button soll disabled sein. Bis jetzt funktioniert alles problemlos. und wenn ich JMenuItem "Neu" wähle, sollte "Verbinden" enabled sein. Aber wenn ich drauf klicke, kriege ich folgenden Fehler:
Wie kann ich diesen Fehler beheben? Ich habe schon gegoogelt und auf einige Sachen gekommen aber die haben mir nicht weiter geholfen. Ich weiss, dass dieses Exception drauf hinweist, dass es um ein NULL Objekt handelt. ich weiss auch, wo der Fehler auftritt, und zwar: ToolBar zTB=new ToolBar(). Ich konnte aber nicht weiterkommen. Ich bin auch kein erfahrener Programmierer. Ich bedanke mich schon einmal im Voraus. Meine Quellcodes:
ich bin neu hier im Forum und hoffe das es der richtige bereich ist. also,
Ich arbeite zur Zeit mit grafischer Oberflächen in Java und habe folgendes Problem. Vereinfacht sieht mein Problem so aus:
Ich habe eine grafische Oberfläche mit einem JMenu (JMenuItem: "Neu" und "Beenden") und JButton "Verbinden". Wenn ich main methode aufrufe, soll am Anfang grafische Oberfläche gezeigt werden und "Verbinden" Button soll disabled sein. Bis jetzt funktioniert alles problemlos. und wenn ich JMenuItem "Neu" wähle, sollte "Verbinden" enabled sein. Aber wenn ich drauf klicke, kriege ich folgenden Fehler:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ToolBar.setStart(ToolBar.java:57)
at MenuBar.actionPerformed(MenuBar.java:54)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Wie kann ich diesen Fehler beheben? Ich habe schon gegoogelt und auf einige Sachen gekommen aber die haben mir nicht weiter geholfen. Ich weiss, dass dieses Exception drauf hinweist, dass es um ein NULL Objekt handelt. ich weiss auch, wo der Fehler auftritt, und zwar: ToolBar zTB=new ToolBar(). Ich konnte aber nicht weiterkommen. Ich bin auch kein erfahrener Programmierer. Ich bedanke mich schon einmal im Voraus. Meine Quellcodes:
Java:
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.ui.RefineryUtilities;
import com.jgoodies.forms.factories.CC;
import com.jgoodies.forms.layout.FormLayout;
public class MainFrame extends JFrame {
JPanel hauptPanel;
public static MenuBar Menu;
public ToolBar ToolBar;
public MainFrame() {
Menu = new MenuBar(this);
ToolBar = new ToolBar("");
hauptPanel = new JPanel();
setLayout(new FormLayout("pref:grow", "pref,pref"));
setTitle("TEST");
makeFrame();
setFocusable(true);
pack();
RefineryUtilities.centerFrameOnScreen(this);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private void makeFrame() {
setJMenuBar(Menu);
add(ToolBar, CC.xy(1, 1));
add(hauptPanel, CC.xy(1, 2));
FormLayout layout = new FormLayout("pref:grow", "pref");
hauptPanel.setLayout(layout);
}
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MenuBar extends JMenuBar implements ActionListener{
private JMenu menuDatei;
private JMenuItem itemNeu,
itemBeenden;
public MainFrame mainFrame;
public String selectedPort = null;
public MenuBar(MainFrame frame){
mainFrame = frame;
makeMenuDatei();
}
private void makeMenuDatei(){
menuDatei = new JMenu("Datei");
itemNeu = new JMenuItem("Neu");
itemBeenden = new JMenuItem("Beenden");
itemNeu.addActionListener(this);
itemBeenden.addActionListener(this);
menuDatei.add(itemNeu);
menuDatei.addSeparator();
menuDatei.add(itemBeenden);
add(menuDatei);
}
@Override
public void actionPerformed(ActionEvent e) {
Object ae = e.getSource();
if ( ae == itemBeenden) {
try {
} catch (Exception e1) {
e1.printStackTrace();
}
System.exit(0);
}
else if (ae == itemNeu) {
ToolBar zTB=new ToolBar();
zTB.setStart(true);
}
}
}
Java:
import javax.swing.JButton;
import javax.swing.JToolBar;
public class ToolBar extends JToolBar {
final static public String CONNECT_COMMAND = "Verbinden";
final static public String DISCONNECT_COMMAND = "Trennen";
public JButton startStop;
public ToolBar(){
}
public ToolBar(String str) {
addButtons();
setFloatable(false);
}
protected void addButtons(){
startStop = makeNavigationButton(CONNECT_COMMAND);
setStart(false);
add(startStop);
}
protected JButton makeNavigationButton(String actionCommand){
JButton button = new JButton();
button.setActionCommand(actionCommand);
button.setToolTipText(actionCommand);
button.addActionListener(new ToolbarListner());
button.setText(actionCommand);
return button;
}
public void setDisconnectedState(JButton button) {
button.setActionCommand(ToolBar.CONNECT_COMMAND);
button.setText(ToolBar.CONNECT_COMMAND);
button.setToolTipText(ToolBar.CONNECT_COMMAND);
}
public void setConnectedState(JButton button) {
button.setActionCommand(ToolBar.DISCONNECT_COMMAND);
button.setText(ToolBar.DISCONNECT_COMMAND);
button.setToolTipText(ToolBar.DISCONNECT_COMMAND);
}
public void setStart(boolean bool){
startStop.setEnabled(bool);
}
}
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ToolbarListner implements ActionListener{
ToolBar zTB= new ToolBar();
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(ToolBar.CONNECT_COMMAND)){
connectClick(e.getSource());
}
}
private void connectClick(Object object){
JButton buttonConnect = (JButton)object;
zTB.setConnectedState(buttonConnect);
}
}
Zuletzt bearbeitet: