Maximera knapp + JFrame
Hej!
Rubriken är lite fel tror jag, det ska stå
Varför funkar inte setSize på JPanel?
Men iaf, som ni så har jag en layout med lite olika grejer här. Men nu är det som så att min Jpanel inte fungerar, jag skulle vilja ha en statisk storlek på den (200,200) men detta fungerar inte utan den anpassar sig helt efter fönstrets storlek och så vill jag inte ha det.
Hur ska jag göra för att få den ska få en statisk storlek?
package layout;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Observable;
import java.util.Observer;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import model.*;
import controller.*;
public class View extends JFrame implements Observer {
private Model model;
private Controller controller;
private JList list;
private JButton btnAddCircle = new JButton("Add Circle");
private JButton btnAddRectangle = new JButton("Add rectangle");
private JButton btnAddBorder = new JButton("Add Border");
private JButton btnAddLine = new JButton("Add Line");
private JButton btnAddText = new JButton("Add Text");
private DrawPanel panel = new DrawPanel();
public View(Model model, Controller controller) {
this.model = model;
this.controller = controller;
model.addObserver(this);
JPanel listPanel = new JPanel();
listPanel.setLayout(new BoxLayout(listPanel, BoxLayout.Y_AXIS));
JPanel layerListPanel = new JPanel();
JPanel layerOptionPanel = new JPanel();
layerListPanel.setLayout(new BorderLayout());
layerOptionPanel.setLayout(new BoxLayout(layerOptionPanel, BoxLayout.Y_AXIS));
list = new JList(model.getLayers());
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
list.addListSelectionListener(controller);
JScrollPane pane = new JScrollPane();
pane.getViewport().add(list);
layerListPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
layerListPanel.add(pane);
layerOptionPanel.add(btnAddRectangle);
layerOptionPanel.add(Box.createRigidArea(new Dimension(5,5)));
layerOptionPanel.add(btnAddCircle);
layerOptionPanel.add(Box.createRigidArea(new Dimension(5,5)));
layerOptionPanel.add(btnAddLine);
layerOptionPanel.add(Box.createRigidArea(new Dimension(5,5)));
layerOptionPanel.add(btnAddText);
layerOptionPanel.add(Box.createRigidArea(new Dimension(5,5)));
layerOptionPanel.add(btnAddBorder);
btnAddCircle.addActionListener(controller);
btnAddCircle.setActionCommand("btnAddCircle");
btnAddBorder.setActionCommand("btnAddBorder");
btnAddBorder.addActionListener(controller);
btnAddRectangle.setActionCommand("btnAddRectangle");
btnAddRectangle.addActionListener(controller);
btnAddLine.setActionCommand("btnAddLine");
btnAddLine.addActionListener(controller);
btnAddText.setActionCommand("btnAddText");
btnAddText.addActionListener(controller);
layerOptionPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 5));
listPanel.add(layerListPanel, BorderLayout.SOUTH);
listPanel.add(layerOptionPanel, BorderLayout.NORTH);
add(listPanel, BorderLayout.EAST);
panel.setSize(200, 200);
panel.setBackground(Color.red);
getContentPane().add(panel);
setSize(800, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public void update(Observable obs, Object arg) {
if("load".equals(arg))
list.setListData(model.getLayers());
list.updateUI();
repaint();
}
public static void main(String[] args) {
Model model = new Model();
Controller controller = new Controller(model);
View view = new View(model, controller);
view.setVisible(true);
}
private class DrawPanel extends JPanel {
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (Layer layer : model.getLayers())
layer.paint(g);
}
}
}