哦,所以我的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();
}
});
}
}
gui: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);
}
}
我不明白问题所在。抱歉,这是瑞典语,但你仍然可以理解我正在做什么。
感谢您提供任何帮助!
答案 0 :(得分:1)
在没有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);
}
}
}