Добро пожаловать, программисты java-swing. Я хочу представить вам мою недавнюю проблему, поскольку я преследую свой хвост снова и снова. Я создал простой JFrame с контейнером JPanel (я тоже попробовал JList). Здесь я иду с BoxLayout и связкой JButtons, которые выровнены по вертикали, так же, как я хочу.
И вот возникает проблема: кадр требует прокрутки, но только вертикальный. Я хочу видеть полные обертываемые имена кнопок без горизонтальной прокрутки, только вертикальной. Текст внутри них все равно должен быть обернут, а вертикальная прокрутка должна увеличиваться, поскольку рама становится тоньше. Простое добавление контейнера в JScrollPane позволяет кнопкам освобождать их способность обертывания заголовка, и появляется нежелательная горизонтальная прокрутка. Стоит отметить, что текст кнопок будет динамичным, и он будет меняться в соответствии с различными действиями, поэтому BoxLayout в моем скромном мнении просто лучший выбор здесь.
То, что я хочу достичь, похоже на эффект JTextArea, но вместо текста моя JScrollPane будет прокручивать вниз/вверх кнопки.Вертикальная прокрутка на контейнере с конкретными JButtons в java Swing
Я не нашел простого решения этого, все надежда исчезла! Я рассчитываю на ваши навыки.
Спасибо заранее. Здесь вы идете с некоторыми кода, как мое описание не может быть достаточно ясно:
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
public Main() {
setLayout(new GridLayout(0, 1, 10, 10));
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
final JButton tester0 = new JButton("<html>primodial one, the mighty tester of wrapping");
panel.add(tester0);
panel.add(new JButton("one"));
panel.add(new JButton("<html> second one, great knight of the Order of the Didgeridoo"));
panel.add(new JButton("three"));
panel.add(new JButton("four"));
panel.add(new JButton("five"));
panel.add(new JButton("six"));
panel.add(new JButton("seven"));
panel.add(new JButton("eight"));
panel.add(new JButton("nine"));
panel.add(new JButton("ten"));
panel.add(new JButton("eleven"));
panel.add(new JButton("twelve"));
add(panel);
// JScrollPane scroll2 = new JScrollPane(panel);
// add(scroll2);
// final JScrollBar scrollBar1 = scroll2.getVerticalScrollBar();
//// scrollBar1.
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Main frame = new Main();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
//frame.pack();
frame.setSize(270, 200);
frame.setVisible(true);
}
});
}
}
С наилучшими пожеланиями!
Взгляните на интерфейс [Прокручиваемый] (http://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html) и [этот пример] (http: // stackoverflow .com/вопросы/13466540/gridbaglayout-in-scrollpane-java-swing/13466875 # 13466875) – MadProgrammer
Спасибо! Это дало мне эффект быстро и без беспорядков, именно то, что я ожидал. Я ценю ваш ответ много, сегодня я узнал очень полезную вещь. – OracleXP
После оценки OracleXP я слепо положил +1 на ответ @MadProgrammer, чтобы отразить его благодарность: P – Sage