好吧,我的 GUI 遇到了问题。在做完全相同的事情时,我遇到了以前从未遇到过的错误。我什至使用旧代码。而且我正在考试,所以我不明白问题,所以压力更大。
主要:http://pastebin.com/Py9S6nd3
import javax.swing.JFrame;
public class Jonth_SwingTenta {
private static void createAndShowGui() {
//Skapar ett fönster där gui komponenter läggs.
JFrame frame = new JFrame("ToDo");
//Anger vad som ska hända om fönstret stängs, i detta fall avslutas fönstret när man trycker på X.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Skapar ett objekt av klassen FormularPanel (privat lyssnarklass)
//GridBagPanel panel = new GridBagPanel();
PanelGUI panel = new PanelGUI();
// frame.setJMenuBar(panel2.getMenu());
//Lägger på panelen på frame.
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
图形用户界面:http://pastebin.com/TYFG1XdU
import java.awt.*;
import javax.swing.*;
import javax.xml.bind.Marshaller.Listener;
/**
*
* @author h12mjont
*/
public class PanelGUI extends JPanel {
private JPanel panel;
private GridBagConstraints c;
private GridBagLayout gridBag;
private JLabel variID, varuNamn, varuKat;
private JTextField textField1, textField2;
private JTextArea textArea1;
private JButton laggTill, taBort, uppdatera, sokPaID, sokKat;
private Listener listener;
private DAOFactory daofactory;
private DAOInterface dao;
private JComboBox markeBox;
String[] marken = {"Frukt", "Mejeri", "Kött"};
public PanelGUI() {
panel = new JPanel(); //Skapar en ny panel där alla komponeneter ska finnas.
gridBag = new GridBagLayout(); //Skapar en gridbaglayout
c = new GridBagConstraints(); //Skapar constraints.
panel.setLayout(gridBag); //Sätter layouten.
//----------------col 1-----------------------------------
variID = new JLabel("Varu ID");
laggTillGUIGridBag(variID, 0, 0, 1, 1);
varuNamn = new JLabel("Varunamn");
laggTillGUIGridBag(varuNamn, 1, 0, 1, 1);
varuKat = new JLabel("Varukategori");
laggTillGUIGridBag(varuKat, 2, 0, 1, 1);
laggTill = new JButton("Lägg till");
laggTillGUIGridBag(laggTill, 3, 0, 1, 1);
uppdatera = new JButton("Uppdatera");
laggTillGUIGridBag(uppdatera, 4, 0, 1, 1);
sokKat = new JButton("Sök på Kategori");
laggTillGUIGridBag(sokKat, 5, 0, 2, 1);
//-----------------col 2--------------------------------
textField1 = new JTextField();
textField1.setPreferredSize(new Dimension(70, 20));
laggTillGUIGridBag(textField1, 0, 1, 2, 1);
textField2 = new JTextField();
textField2.setPreferredSize(new Dimension(70, 20));
laggTillGUIGridBag(textField2, 1, 1, 2, 1);
markeBox = new JComboBox();
markeBox.setModel(new DefaultComboBoxModel(marken));
// markeBox.addItemListener(combolyssnare);
markeBox.setPreferredSize(new Dimension(70, 20));
laggTillGUIGridBag(markeBox, 2, 1, 1, 1);
taBort = new JButton("Ta bort");
laggTillGUIGridBag(taBort, 3, 1, 1, 1);
sokPaID = new JButton("Sök på id");
laggTillGUIGridBag(sokPaID, 4, 1, 1, 1);
//-------------------col 3--------------------------------
textArea1 = new JTextArea();
textArea1.setPreferredSize(new Dimension(350, 100));
textArea1.setMinimumSize(new Dimension(350, 100));
laggTillGUIGridBag(textArea1, 0, 3, 2, 2);
//----------------Slut på GUI ----------------------------
add(panel);
}
private void laggTillGUIGridBag(Component guiKomponent, int rad, int kolumn, int bredd, int hojd) {
c.fill = GridBagConstraints.BOTH; //Gör så komponenten fyller ut sig i storlek åt båda håll.
c.gridx = kolumn;
c.gridy = rad;
c.gridwidth = bredd;
c.gridheight = hojd;
c.insets = new Insets(5, 5, 5, 5); //Sätter padding runt komponenten
gridBag.setConstraints(guiKomponent, c);
panel.add(guiKomponent, c);
}
}
我不明白问题出在哪里。抱歉,虽然它是瑞典语的,但你仍然可以理解我用它做什么。
感谢您提供的任何帮助!
最佳答案
没有所有 setPreferredSize()
调用看起来不错,应该是 avoided .
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.xml.bind.Marshaller.Listener;
public class Jonth_SwingTenta {
private static void createAndShowGui() {
JFrame frame = new JFrame("ToDo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PanelGUI panel = new PanelGUI();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGui();
}
});
}
private static class PanelGUI extends JPanel {
private JPanel panel;
private GridBagConstraints c;
private GridBagLayout gridBag;
private JLabel variID, varuNamn, varuKat;
private JTextField textField1, textField2;
private JTextArea textArea1;
private JButton laggTill, taBort, uppdatera, sokPaID, sokKat;
private Listener listener;
private JComboBox markeBox;
String[] marken = {"Frukt", "Mejeri", "Kött"};
public PanelGUI() {
panel = new JPanel();
gridBag = new GridBagLayout();
c = new GridBagConstraints();
panel.setLayout(gridBag);
//----------------col 1-----------------------------------
variID = new JLabel("Varu ID");
laggTillGUIGridBag(variID, 0, 0, 1, 1);
varuNamn = new JLabel("Varunamn");
laggTillGUIGridBag(varuNamn, 1, 0, 1, 1);
varuKat = new JLabel("Varukategori");
laggTillGUIGridBag(varuKat, 2, 0, 1, 1);
laggTill = new JButton("Lägg till");
laggTillGUIGridBag(laggTill, 3, 0, 1, 1);
uppdatera = new JButton("Uppdatera");
laggTillGUIGridBag(uppdatera, 4, 0, 1, 1);
sokKat = new JButton("Sök på Kategori");
laggTillGUIGridBag(sokKat, 5, 0, 2, 1);
//-----------------col 2--------------------------------
textField1 = new JTextField();
laggTillGUIGridBag(textField1, 0, 1, 2, 1);
textField2 = new JTextField();
laggTillGUIGridBag(textField2, 1, 1, 2, 1);
markeBox = new JComboBox();
markeBox.setModel(new DefaultComboBoxModel(marken));
// markeBox.addItemListener(combolyssnare);
laggTillGUIGridBag(markeBox, 2, 1, 1, 1);
taBort = new JButton("Ta bort");
laggTillGUIGridBag(taBort, 3, 1, 1, 1);
sokPaID = new JButton("Sök på id");
laggTillGUIGridBag(sokPaID, 4, 1, 1, 1);
//-------------------col 3--------------------------------
textArea1 = new JTextArea();
laggTillGUIGridBag(textArea1, 0, 3, 2, 2);
//----------------Slut på GUI ----------------------------
add(panel);
}
private void laggTillGUIGridBag(Component guiKomponent,
int rad, int kolumn, int bredd, int hojd) {
c.fill = GridBagConstraints.BOTH;
c.gridx = kolumn;
c.gridy = rad;
c.gridwidth = bredd;
c.gridheight = hojd;
c.insets = new Insets(5, 5, 5, 5);
gridBag.setConstraints(guiKomponent, c);
panel.add(guiKomponent, c);
}
}
}
关于java - 无法编译的源代码 java.awt.Container.add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985998/