1
자바 스윙 JScrollBar의 색상을 변경할 수 없습니다. 나는 이것을 많이 검색하고 읽었다. XML 파일을 사용하여 Swing에 대한 Synth 룩앤필을 사용하여 색상을 정의하려고합니다. 이것은 버튼에 대해서는 문제가 없지만 스크롤 막대에서는 전혀 작동하지 않습니다.Synth를 사용하여 ScrollBar의 색상을 변경할 수 없습니다. - Java Swing
이 질문에 파일을 첨부 할 수 있기를 기대했지만 가능하지 않습니다. 나는 당신에게 파일을 보내 게되어 기쁘다.
미리 감사드립니다.
/*
* TestSynthScrollBar.java
*
* Created on Dec 5, 2011, 2:52:26 PM
*/
package playDisplay;
import javax.swing.UIManager;
import javax.swing.plaf.synth.SynthLookAndFeel;
public class TestSynthScrollBar extends javax.swing.JFrame
{
private static String synthFile = "scrollBarSkin.xml";
/** Creates new form TestSynthScrollBar */
public TestSynthScrollBar()
{
initComponents();
}
private static void initAnotherLookAndFeel()
{
SynthLookAndFeel badAssLookAndFeel = new SynthLookAndFeel();
try
{
badAssLookAndFeel.load(TestSynthScrollBar.class.getResourceAsStream(synthFile), TestSynthScrollBar.class);
UIManager.setLookAndFeel(badAssLookAndFeel);
}
catch (Exception e)
{ }
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
somePanel = new javax.swing.JPanel();
someScrollPane = new javax.swing.JScrollPane();
someTextArea = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
someScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
someScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
someTextArea.setColumns(20);
someTextArea.setRows(5);
someScrollPane.setViewportView(someTextArea);
javax.swing.GroupLayout somePanelLayout = new javax.swing.GroupLayout(somePanel);
somePanel.setLayout(somePanelLayout);
somePanelLayout.setHorizontalGroup(
somePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(somePanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(someScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 350, Short.MAX_VALUE)
.addContainerGap())
);
somePanelLayout.setVerticalGroup(
somePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, somePanelLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(someScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(somePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(somePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[])
{
initAnotherLookAndFeel();
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new TestSynthScrollBar().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel somePanel;
private javax.swing.JScrollPane someScrollPane;
private javax.swing.JTextArea someTextArea;
// End of variables declaration//GEN-END:variables
}
Johnny, 왜 Metal LAF에서이 작업을 할 수 없습니까? 고마워, Alan – Alan
내가 본 것 때문에 LA에서 일하는 것 같지 않았습니다. 한번 해봐. –