gpt4 book ai didi

java - 如何更改 JSplitPane 的颜色

转载 作者:搜寻专家 更新时间:2023-11-01 01:18:06 25 4
gpt4 key购买 nike

我写了一个小程序,在阅读一本关于 swing 的书时,它在两个标签之间创建了一个 JSplitPane。问题是 JSplitPane 几乎看不到(至少在我的操作系统 - MAC OS Lion 中)并且在其上设置一些属性(如前景色)似乎不起作用。

代码如下:

//Demonstrate a simple JSplitPane


package swingexample4_6;

import javax.swing.*;
import java.awt.*;

public class SplitPaneDemo {

//constructor
public SplitPaneDemo()
{
//Create a new JFrame container.
//Use the default border layout
JFrame jfrm = new JFrame("Split Pane Demo");

//Give the frame an initial size
jfrm.setSize(380, 150);

//Terminate the program when the user closes the application
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//--Make two labels to show the split pane
JLabel jlab = new JLabel(" Left side: ABCDEFGHIJKLMNOPQRSTUVWXYZ");
JLabel jlab2 = new JLabel(" Right side: ABCDEFGHIJKLMNOPQRSTUVWXYZ");

//Set the minimum size for each label
//This step is not technically needed to use a split pane,
//but it enables the split pane resizing features to be
//used to their maximum extent
jlab.setMinimumSize(new Dimension(90, 30));
jlab2.setMinimumSize(new Dimension(90, 30));

//--Create a split pane
JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, jlab, jlab2);

//Code to get a list of component names in the console
Component[] listComponents = jsp.getComponents();

String theList;
for (Component myComponent: listComponents)
{
theList = myComponent.toString();
System.out.println(theList);
}


//Add the split pane to the content pane
jfrm.getContentPane().add(jsp);

//Display the frame
jfrm.setVisible(true);
}

public static void main(String[] args) {
//Create the frame on the event dispatching thread
SwingUtilities.invokeLater(new Runnable(){

@Override
public void run() {
new SplitPaneDemo();
}

});
}
}

有什么办法可以改变它的颜色,让它真正脱颖而出吗?谢谢。

最佳答案

您可以使用 SplitPane.background 属性,如下所示。

SplitPane background

import javax.swing.*;
import java.awt.*;

/** @see http://stackoverflow.com/a/10110232/230513 */
public class SplitPaneDemo {

//constructor
public SplitPaneDemo() {
JFrame jf = new JFrame("Split Pane Demo");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//--Make two labels to show the split pane
JPanel left = content("Left side: ");
JPanel right = content("Right side: ");

//--Create a split pane
JSplitPane jsp = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT, true, left, right);
jsp.setDividerLocation(0.5f);

//Add the split pane to the frame's content pane
jf.add(jsp);
jf.pack();

//Display the frame
jf.setLocationRelativeTo(null);
jf.setVisible(true);

//Code to get a list of component names in the console
for (Component myComponent : jsp.getComponents()) {
System.out.println(myComponent);
}
}

private JPanel content(String s) {
final JLabel label = new JLabel(s + "Some text.", JLabel.CENTER);
JPanel panel = new JPanel(new GridLayout()) {

@Override
public Dimension getPreferredSize() {
Dimension d = label.getPreferredSize();
return new Dimension(d.width * 2, d.height * 3);
}
};
panel.setOpaque(true);
panel.setBackground(new Color(0xffffffc0));
panel.add(label);
return panel;
}

public static void main(String[] args) {
UIManager.put("SplitPane.background", new Color(0xff8080ff));
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new SplitPaneDemo();
}
});
}
}

关于java - 如何更改 JSplitPane 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com