java boxlayout_java – 使用boxlayout,如何让组件填充所有可用的水平宽度?

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.HeadlessException;

import javax.swing.BoxLayout;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

/**

* @author dah01

*/

public class Main {

private static int panelNumber = 1;

public static final String fillerText = ""

+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec "

+ "placerat aliquam magna, in faucibus ante pharetra porta. "

+ "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices "

+ "posuere cubilia Curae; Quisque eu dui ligula. Donec consequat "

+ "fringilla enim eu tempus. Ut pharetra velit id sapien vehicula "

+ "scelerisque. Proin sit amet tellus enim, et gravida dui. Ut "

+ "laoreet tristique tincidunt. Integer pharetra pulvinar neque id "

+ "dignissim. Praesent gravida dapibus ornare. Aenean facilisis "

+ "consectetur tincidunt. Donec ante tellus, vehicula vitae "

+ "ultrices eget, scelerisque cursus turpis. Quisque volutpat odio "

+ "sed risus posuere adipiscing. In pharetra elit id risus ornare "

+ "ut bibendum orci luctus. In sollicitudin gravida neque quis "

+ "lobortis. Morbi id justo enim. Aliquam eget orci lorem.";

public static void main(String[] args) {

JPanel innerPanelOne = getPanel();

//SECOND PANEL

JPanel innerPanelTwo = getPanel();

//MIDDLE PANEL

JPanel middlePanel = new JPanel();

middlePanel.setBackground(Color.RED);

middlePanel.setLayout(new BoxLayout(middlePanel, BoxLayout.PAGE_AXIS));

middlePanel.add(innerPanelOne);

middlePanel.add(innerPanelTwo);

//OUTER PANEL

JPanel outerPanel = new JPanel();

outerPanel.setBackground(Color.BLUE);

outerPanel.add(middlePanel);

createAndShowGUI(outerPanel);

}

private static void createAndShowGUI(JPanel outerPanel) throws HeadlessException {

//FRAME

JFrame frame = new JFrame();

frame.setContentPane(outerPanel);

frame.setSize(500, 500);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private static JPanel getPanel() {

//TEXT AREA

JTextArea t = new JTextArea(fillerText);

t.setWrapStyleWord(true);

t.setLineWrap(true);

//Scroll

JScrollPane scrollOne = new JScrollPane();

scrollOne.setViewportView(t);

//Label

JLabel l = new JLabel("LABEL " +panelNumber++);

//FIRST PANEL

JPanel p = new JPanel();

p.setLayout(new BorderLayout());

p.setBackground(Color.GREEN);

p.add(l,BorderLayout.NORTH);

p.add(scrollOne,BorderLayout.SOUTH);

t.setMaximumSize(new Dimension(1920,1080));

p.setMaximumSize(new Dimension(1920,1080));

l.setMaximumSize(new Dimension(1920,1080));

return p;

}

}

编辑:

package com.protocase.notes.views;

import com.protocase.notes.controller.NotesController;

import com.protocase.notes.model.Note;

import com.protocase.notes.model.User;

import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.util.Date;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.border.BevelBorder;

/**

* @author dah01

*/

public class NotesPanel extends JPanel {

public static void main(String[] args) {

JFrame f = new JFrame();

f.setSize(500, 500);

Note note = new Note();

User u = new User();

note.setCreator(u);

note.setLastEdited(u);

note.setDateCreated(new Date());

JPanel panel = new JPanel();

panel.add(new NotesPanel(note, null));

panel.add(new NotesPanel(note, null));

panel.setBackground(Color.red);

panel.setMaximumSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE));

f.setContentPane(panel);

f.setVisible(true);

}

//

private Note note;

private NotesController controller;

//

//

public NotesController getController() {

return controller;

}

public void setController(NotesController controller) {

this.controller = controller;

}

public Note getNote() {

return note;

}

public void setNote(Note note) {

this.note = note;

}

//

//

/**

* Sets up a note panel that shows everything about the note.

* @param note

*/

public NotesPanel(Note note, NotesController controller) {

// -- Setup the layout manager.

this.setBackground(new Color(199, 187, 192));

this.setLayout(new GridBagLayout());

this.setBorder(new BevelBorder(BevelBorder.RAISED));

GridBagConstraints c = new GridBagConstraints();

// -- Setup the creator section.

JLabel creatorLabel = new JLabel("Note by " + note.getCreator() + " @ " + note.getDateCreated());

creatorLabel.setAlignmentX(JLabel.LEFT_ALIGNMENT);

c.fill = GridBagConstraints.HORIZONTAL;

c.gridy = 0;

c.weightx = 1;

c.weighty = 0.3;

this.add(creatorLabel, c);

// -- Setup the notes area.

JTextArea notesContentsArea = new JTextArea(note.getContents());

notesContentsArea.setEditable(false);

notesContentsArea.setLineWrap(true);

notesContentsArea.setWrapStyleWord(true);

JScrollPane scrollPane = new JScrollPane(notesContentsArea);

scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);

c.gridy = 1;

this.add(scrollPane, c);

// -- Setup the edited by label.

JLabel editorLabel = new JLabel(" -- Last edited by " + note.getLastEdited() + " at " + note.getDateModified());

editorLabel.setAlignmentX(Component.LEFT_ALIGNMENT);

c.gridy = 2;

this.add(editorLabel, c);

// -- Add everything to the view.

this.setBackground(Color.yellow);

//this.add(creatorLabel);

//this.add(scrollPane);

//this.add(editorLabel);

}

//

@Override

public Dimension getPreferredSize() {

Dimension d = super.getPreferredSize();

d.width = this.getParent().getSize().width;

return d;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值