오늘 나는 JList를 가지고 놀다가 문제를 발견했습니다. 제 밭이 좋은 이름이 아니라는 건 알지만 제가 말했듯이 그냥 놀고있었습니다.
내 JList에 대해 수평 및 수직 JScrollPane을 만들고 싶었습니다. 실제로 작동하지만 여전히 문제가 있습니다.
세로 스크롤 창을 보려면 항상 오른쪽으로 스크롤해야합니다.
내 코드 :
final JList list = new JList(GUI.strings.toArray());
JScrollPane scrollPane = new JScrollPane(list);
JScrollPane scrollPanex = new JScrollPane(scrollPane);
scrollPanex.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
getContentPane().add(scrollPanex, BorderLayout.CENTER);
두 스크롤바를 항상 볼 수 있도록이 문제를 해결할 수있는 방법이 있습니까?
하나의 JScrollPane을 사용한 다음 단일 JScrollPane의 스크롤 막대 정책을 모두 설정하십시오.
final JList list = new JList(GUI.strings.toArray());
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
getContentPane().add(scrollPane, BorderLayout.CENTER);
예 :
import java.awt.Dimension;
import java.util.Random;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.SwingUtilities;
public class ScrollPaneFun {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Random rand = new Random();
DefaultListModel<String> lModel = new DefaultListModel<>();
JList<String> myList = new JList<>(lModel);
myList.setVisibleRowCount(20);
for (int i = 0; i < 50; i++) {
StringBuilder sb = new StringBuilder();
sb.append(String.valueOf(i) + ": ");
for (int j = 0; j < 50; j++) {
for (int k = 0; k < 3; k++) {
char c = (char) ('a' + rand.nextInt('z' - 'a' + 1));
sb.append(c);
}
sb.append(' ');
}
lModel.addElement(sb.toString());
}
JScrollPane scrollPane = new JScrollPane(myList);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JViewport viewport = scrollPane.getViewport();
int w = 400;
int h = viewport.getPreferredSize().height;
Dimension preferredSize = new Dimension(w, h);
viewport.setPreferredSize(preferredSize);
JOptionPane.showMessageDialog(null, scrollPane);
}
});
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다