내 JFrame의 오른쪽에 JXTaskPaneContainer
이 있는데 하이퍼 링크와 레이블이 있습니다. 윈도우의 주요 부분은 다음과 같아야합니다창 크기를 조정할 때 JXTaskPaneContainer가 잘못 커짐
- 텍스트의 왼쪽에 큰 지역은
- 메시지와 오른쪽 조치 이제
에 작은 영역, 문제는 추가 점이다
그것은을 가진 경우에도 괴상 가져옵니다 새로운 요소가 많이 컨테이너가 왼쪽으로 성장하고 텍스트를 통해 원인 JXTaskPaneContainer
은 javax.swing.JScrollPane
(video/yt)입니다.
문제는 JXLabel과 관련이있는 것처럼 보입니다. 단어 줄 바꿈이 의심 스럽습니까? 이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?
[예] 요청에 따라 독립된 예제입니다. Full source on github.
package layoutproblemSSCEC;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeListener;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import org.jdesktop.swingx.JXButton;
import org.jdesktop.swingx.JXLabel;
import org.jdesktop.swingx.JXTaskPane;
import org.jdesktop.swingx.JXTaskPaneContainer;
public class SwingWindow {
private JFrame frame;
String dolorem = "Sed ut perspiciatis unde omnis iste natus error sit "
+ "voluptatem accusantium doloremque laudantium, totam rem aperiam, "
+ "eaque ipsa quae ab illo inventore veritatis et quasi architecto "
+ "beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem "
+ "quia voluptas sit aspernatur aut odit aut fugit, sed quia "
+ "consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. "
+ "Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, "
+ "consectetur, adipisci velit, sed quia non numquam eius modi tempora "
+ "incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut "
+ "enim ad minima veniam, quis nostrum exercitationem ullam corporis "
+ "suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? "
+ "Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse "
+ "quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat "
+ "quo voluptas nulla pariatur?";
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SwingWindow window = new SwingWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public SwingWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JXTaskPaneContainer panels = new JXTaskPaneContainer();
JScrollPane scrollpanel = new JScrollPane(panels);
Container content = frame.getContentPane();
content.add(new JTextArea(dolorem), BorderLayout.CENTER);
content.add(scrollpanel, BorderLayout.EAST);
content.add(new JXButton(new AbstractAction("Click me") {
public void actionPerformed(ActionEvent arg0) {
JXTaskPane panel = new JXTaskPane("test");
JXLabel lbl = new JXLabel(dolorem);
lbl.setLineWrap(true);
panel.add(lbl);
panels.add(panel);
}
}), BorderLayout.NORTH);
panels.add(new JXTaskPane("Click the button, then resize"));
}
}
체크 - taskPane (또는 컨테이너, 세부 사항을 잊었는) prefSize을 존중하는 관리자를 필요로한다. 도움이되지 않는 경우 SSCCE를 게시하여 문제를 시연하십시오 – kleopatra
감사합니다. GridBagLayout을 시도해 보겠습니다. –
반복 : 문제를 나타내는 SSCCE 표시 - 간결한 답변을 얻을 수 있다고 확신합니다 .-) – kleopatra