01. december 2006 - 10:12
Der er
4 kommentarer og 1 løsning
Java: Layout
Jeg er ved at lave et layout, men har lavet denne lille eksempelkode, for at illustrere mit problem: import javax.swing.*; import java.awt.*; class Main { public static void main(String[] args) { JFrame frame = new JFrame("Testing layout"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel centerPanel = new JPanel(new BorderLayout()); JPanel centerTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); centerPanel.add(centerTopPanel, BorderLayout.NORTH); JPanel centerLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); centerPanel.add(centerLeftPanel, BorderLayout.WEST); JPanel centerCenterPanel = new JPanel(); centerCenterPanel.setLayout(new BoxLayout(centerCenterPanel, BoxLayout.Y_AXIS)); centerPanel.add(centerCenterPanel, BorderLayout.CENTER); JPanel centerRightPanel = new JPanel(new BorderLayout()); centerPanel.add(centerRightPanel, BorderLayout.EAST); //creating centerTop Panel centerTopPanel.add(new JLabel("Headline")); //creating centerLeft Panel centerLeftPanel.add(new JLabel("New game:")); //creating centerCenter panel JPanel contentPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel formPanel = new JPanel(new GridLayout(0,1)); JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); JLabel competitor1Label = new JLabel("Start 1:"); competitor1Label.setFont(new Font("Dialog",Font.BOLD,12)); JComboBox competitor1Box = new JComboBox(); competitor1Box.addItem("test"); competitor1Box.addItem("test"); competitor1Box.addItem("test"); competitor1Box.setPreferredSize(new Dimension(150,20)); formPanel.add(competitor1Label); formPanel.add(competitor1Box); JLabel competitor2Label = new JLabel("Start 2:"); competitor2Label.setFont(new Font("Dialog",Font.BOLD,12)); JComboBox competitor2Box = new JComboBox(); competitor2Box.addItem("test"); competitor2Box.addItem("test"); competitor2Box.addItem("test"); competitor2Box.setPreferredSize(new Dimension(150,20)); formPanel.add(competitor2Label); formPanel.add(competitor2Box); contentPanel.add(formPanel); contentPanel.add(buttonPanel); centerCenterPanel.add(contentPanel); // centerCenterPanel.add(formPanel); // centerCenterPanel.add(buttonPanel); //creating right panel JLabel headlineRightLabel = new JLabel("Your sales:",JLabel.LEFT); centerRightPanel.add(headlineRightLabel,BorderLayout.NORTH); JList couponList = new JList(); couponList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane scrollCouponList = new JScrollPane(couponList); scrollCouponList.setPreferredSize(new Dimension(250,300)); JPanel scrollPanel = new JPanel(); scrollPanel.add(scrollCouponList); centerRightPanel.add(scrollPanel,BorderLayout.CENTER); //creating bottom panel JButton createButton = new JButton("Spil"); buttonPanel.add(createButton); frame.add(centerPanel, BorderLayout.CENTER); frame.setSize(800,500); frame.setLocation(200,200); frame.setVisible(true); } } Som I kan se, så ligger min "spil" knap forkert i layoutet? Det skyldes at mine Panels ligger sig efter hinanden, istedet for at atarte under det andet. Hvordan kan jeg få det flyttet ned under det andet?
Annonceindlæg tema
01. december 2006 - 10:46
#1
import javax.swing.*; import java.awt.*; class Grafik { public static void main(String[] args) { JFrame frame = new JFrame("Testing layout"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel centerPanel = new JPanel(new BorderLayout()); JPanel centerTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); centerPanel.add(centerTopPanel, BorderLayout.NORTH); JPanel centerLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); centerPanel.add(centerLeftPanel, BorderLayout.WEST); JPanel centerCenterPanel = new JPanel(); centerCenterPanel.setLayout(new BoxLayout(centerCenterPanel, BoxLayout.Y_AXIS)); centerPanel.add(centerCenterPanel, BorderLayout.CENTER); JPanel centerRightPanel = new JPanel(new BorderLayout()); centerPanel.add(centerRightPanel, BorderLayout.EAST); //creating centerTop Panel centerTopPanel.add(new JLabel("Headline")); //creating centerLeft Panel centerLeftPanel.add(new JLabel("New game:")); //creating centerCenter panel JPanel contentPanel = new JPanel(new BorderLayout()); // ændring JPanel formPanel = new JPanel(new GridLayout(0,1)); JPanel buttonPanel = new JPanel(); //Ændring JLabel competitor1Label = new JLabel("Start 1:"); competitor1Label.setFont(new Font("Dialog",Font.BOLD,12)); JComboBox competitor1Box = new JComboBox(); competitor1Box.addItem("test"); competitor1Box.addItem("test"); competitor1Box.addItem("test"); competitor1Box.setPreferredSize(new Dimension(150,20)); formPanel.add(competitor1Label); formPanel.add(competitor1Box); JLabel competitor2Label = new JLabel("Start 2:"); competitor2Label.setFont(new Font("Dialog",Font.BOLD,12)); JComboBox competitor2Box = new JComboBox(); competitor2Box.addItem("test"); competitor2Box.addItem("test"); competitor2Box.addItem("test"); competitor2Box.setPreferredSize(new Dimension(150,20)); formPanel.add(competitor2Label); formPanel.add(competitor2Box); contentPanel.add(formPanel, BorderLayout.NORTH); //Ændring contentPanel.add(buttonPanel, BorderLayout.CENTER); //Ændring centerCenterPanel.add(contentPanel); // centerCenterPanel.add(formPanel); // centerCenterPanel.add(buttonPanel); //creating right panel JLabel headlineRightLabel = new JLabel("Your sales:",JLabel.LEFT); centerRightPanel.add(headlineRightLabel,BorderLayout.NORTH); JList couponList = new JList(); couponList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane scrollCouponList = new JScrollPane(couponList); scrollCouponList.setPreferredSize(new Dimension(250,300)); JPanel scrollPanel = new JPanel(); scrollPanel.add(scrollCouponList); centerRightPanel.add(scrollPanel,BorderLayout.CENTER); //creating bottom panel JButton createButton = new JButton("Spil"); buttonPanel.add(createButton); frame.add(centerPanel, BorderLayout.CENTER); frame.setSize(800,500); frame.setLocation(200,200); frame.setVisible(true); } }
01. december 2006 - 10:55
#2
Tak for svaret. Der er dog stadig et par problemer: 1) jeg er ikke interesseret i, at de comboBox'es bliver så bredde! De skal bare være de 150px, som jeg har bedt dem om :) 2) Spil-knappen skal gerne være højre-centreret efter de comboBoxes, sådan at den er i højre side.
01. december 2006 - 11:03
#3
Har fundet en anden måde, som er næsten lige så god: import javax.swing.*; import java.awt.*; class Main { public static void main(String[] args) { JFrame frame = new JFrame("Testing layout"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel centerPanel = new JPanel(new BorderLayout()); JPanel centerTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); centerPanel.add(centerTopPanel, BorderLayout.NORTH); JPanel centerLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); centerPanel.add(centerLeftPanel, BorderLayout.WEST); JPanel centerCenterPanel = new JPanel(); centerCenterPanel.setLayout(new BoxLayout(centerCenterPanel, BoxLayout.Y_AXIS)); centerPanel.add(centerCenterPanel, BorderLayout.CENTER); JPanel centerRightPanel = new JPanel(new BorderLayout()); centerPanel.add(centerRightPanel, BorderLayout.EAST); //creating centerTop Panel centerTopPanel.add(new JLabel("Headline")); //creating centerLeft Panel centerLeftPanel.add(new JLabel("New game:")); //creating centerCenter panel JPanel contentPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel formPanel = new JPanel(new GridLayout(0,1)); JLabel competitor1Label = new JLabel("Start 1:"); competitor1Label.setFont(new Font("Dialog",Font.BOLD,12)); JComboBox competitor1Box = new JComboBox(); competitor1Box.addItem("test"); competitor1Box.addItem("test"); competitor1Box.addItem("test"); competitor1Box.setPreferredSize(new Dimension(150,20)); formPanel.add(competitor1Label); formPanel.add(competitor1Box); JLabel competitor2Label = new JLabel("Start 2:"); competitor2Label.setFont(new Font("Dialog",Font.BOLD,12)); JComboBox competitor2Box = new JComboBox(); competitor2Box.addItem("test"); competitor2Box.addItem("test"); competitor2Box.addItem("test"); competitor2Box.setPreferredSize(new Dimension(150,20)); formPanel.add(competitor2Label); formPanel.add(competitor2Box); JButton createButton = new JButton("Spil"); formPanel.add(new JLabel(" ")); formPanel.add(createButton); contentPanel.add(formPanel); centerCenterPanel.add(contentPanel); //creating right panel JLabel headlineRightLabel = new JLabel("Your sales:",JLabel.LEFT); centerRightPanel.add(headlineRightLabel,BorderLayout.NORTH); JList couponList = new JList(); couponList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JScrollPane scrollCouponList = new JScrollPane(couponList); scrollCouponList.setPreferredSize(new Dimension(250,300)); JPanel scrollPanel = new JPanel(); scrollPanel.add(scrollCouponList); centerRightPanel.add(scrollPanel,BorderLayout.CENTER); frame.add(centerPanel, BorderLayout.CENTER); frame.setSize(800,500); frame.setLocation(200,200); frame.setVisible(true); } } Der er kun ét problem her: 1) hvordan får jeg knappen til at blive mindre? den skal ikke have fuld bredde.
01. december 2006 - 21:17
#4
Har du et svar? Eller må vi vist hellere få lukker her..smid endelig et svar ;)
01. december 2006 - 21:40
#5
:)
Kurser inden for grundlæggende programmering